Method: Enum.define_enum_value
- Defined in:
- lib/trax/core/primitives/enum.rb
.define_enum_value(const_name, val = nil) ⇒ Object Also known as: enum_value, define
Class Methods ###
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/trax/core/primitives/enum.rb', line 24 def self.define_enum_value(const_name, val=nil) name = "#{const_name}".underscore.to_sym const_name = name.to_s.camelize val = (self._values_hash.length + 1) if val.nil? raise ::Trax::Core::Errors::DuplicateEnumValue.new(:klass => self.class.name, :value => const_name) if self === name raise ::Trax::Core::Errors::DuplicateEnumValue.new(:klass => self.class.name, :value => val) if self === val value_klass = self.const_set(const_name, Class.new(::EnumValue){ self.tag = name self.value = val }) self._values_hash[val] = value_klass self._names_hash[name] = value_klass end |