module Dimensional::Enum::ClassMethods

Public Instance Methods

def_enum( enum_key ) click to toggle source
Calls superclass method
# File lib/dimensional/enum.rb, line 23
def def_enum( enum_key )
  if @enum_attributes.nil?
    raise ::Dimensional::Enum::InvalidDefinition, "Undefined @enum_attributes on #{self}"
  end

  unless @enum_attributes.include? enum_key
    raise ::Dimensional::Enum::InvalidDefinition, "Undefined enum_key #{enum_key} in @enum_attributes"
  end
  
  enum_values     = @enum_attributes.to_value_h( enum_key )
  enum_attribute  = @enum_attributes.to_attribute_h( enum_key )

  self.class_eval do
    enum enum_key => enum_values

    define_method enum_key do
      return nil unless attr_key = super()
      ::Dimensional::Enum::Attribute.new attr_key, enum_attribute
    end
  end
end
set_enum_attributes( enum_attributes ) click to toggle source
# File lib/dimensional/enum.rb, line 19
def set_enum_attributes( enum_attributes )
  @enum_attributes = enum_attributes
end