module Enumerize::Base::ClassMethods

def _enumerize_module

def _enumerize_module
  @_enumerize_module ||= begin
    mod = Module.new
    include mod
    mod
  end
end

def enumerize(name, options={})

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

def enumerized_attributes

def enumerized_attributes
  @enumerized_attributes ||= AttributeMap.new
end