Module: Enumerize::Base::ClassMethods

Defined in:
lib/enumerize/base.rb

Instance Method Summary collapse

Instance Method Details

#enumerize(name, options = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/enumerize/base.rb', line 20

def enumerize(name, options={})
  attr = Attribute.new(self, name, options)
  enumerized_attributes << attr

  unless methods.include?(attr.name)
    _enumerize_module._class_methods.module_eval <<-RUBY, __FILE__, __LINE__ + 1
      def #{attr.name}
        enumerized_attributes[:#{attr.name}]
      end
    RUBY
  end

  attr.define_methods!(_enumerize_module)
end

#enumerized_attributesObject



35
36
37
# File 'lib/enumerize/base.rb', line 35

def enumerized_attributes
  @enumerized_attributes ||= AttributeMap.new
end

#inherited_with_enumerized(subclass) ⇒ Object



39
40
41
42
43
44
# File 'lib/enumerize/base.rb', line 39

def inherited_with_enumerized(subclass)
  enumerized_attributes.add_dependant subclass.enumerized_attributes
  if respond_to?(:inherited_without_enumerized, true)
    inherited_without_enumerized subclass
  end
end