Sha256: 36b17dbc9eaf950550672956565fa88304ab070f09eb3ca2627d093981518fa0

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

class GettextSimpleRails::ModelInspector
  def self.model_classes
    clazzes = []
    
    ::Rails.application.eager_load!
    
    ::Object.constants.each do |clazz|
      clazz = clazz.to_s.constantize
      next unless clazz.class == Class
      next unless clazz < ActiveRecord::Base
      yield ::GettextSimpleRails::ModelInspector.new(clazz)
    end
  end
  
  attr_reader :clazz
  
  def initialize(clazz)
    @clazz = clazz
  end
  
  def attributes
    @clazz.attribute_names.each do |attribute_name|
      yield ::GettextSimpleRails::ModelInspector::Attribute.new(self, attribute_name)
    end
  end
  
  def snake_name
    return ::StringCases.camel_to_snake(clazz.name)
  end
  
  def gettext_key
    return "models.name.#{snake_name}"
  end
  
  def gettext_key_one
    return "#{gettext_key}.one"
  end
  
  def gettext_key_other
    return "#{gettext_key}.other"
  end
  
  # TODO: Maybe this should yield a ModelInspector::Relationship instead?
  def relationships
    @clazz.reflections.each do |key, reflection|
      yield key, reflection
    end
  end
  
  def relationship_gettext_key(name)
    return "models.attributes.#{snake_name}.#{name}"
  end
  
  class Attribute
    attr_reader :name
    
    def initialize(clazz_inspector, name)
      @clazz_inspector = clazz_inspector
      @name = name
    end
    
    def gettext_key
      return "models.attributes.#{@clazz_inspector.snake_name}.#{@name}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gettext_simple_rails-0.0.1 lib/gettext_simple_rails/model_inspector.rb