Class: PersistentEnum::ActsAsEnum::State
- Inherits:
-
Object
- Object
- PersistentEnum::ActsAsEnum::State
- Defined in:
- lib/persistent_enum/acts_as_enum.rb
Instance Attribute Summary collapse
-
#by_name ⇒ Object
readonly
Returns the value of attribute by_name.
-
#by_name_insensitive ⇒ Object
readonly
Returns the value of attribute by_name_insensitive.
-
#by_ordinal ⇒ Object
readonly
Returns the value of attribute by_ordinal.
-
#enum_spec ⇒ Object
readonly
Returns the value of attribute enum_spec.
-
#required_by_ordinal ⇒ Object
readonly
Returns the value of attribute required_by_ordinal.
Instance Method Summary collapse
-
#initialize(enum_spec, enum_values, required_enum_constants) ⇒ State
constructor
A new instance of State.
- #insensitive_lookup? ⇒ Boolean
Constructor Details
#initialize(enum_spec, enum_values, required_enum_constants) ⇒ State
Returns a new instance of State.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/persistent_enum/acts_as_enum.rb', line 14 def initialize(enum_spec, enum_values, required_enum_constants) @enum_spec = enum_spec enum_values.each do |val| val.attributes.each_value { |attr| attr.freeze } val.freeze end @by_ordinal = enum_values.index_by(&:ordinal).freeze @by_name = enum_values .index_by { |v| v.read_attribute(enum_spec.name_attr) } .with_indifferent_access .freeze @by_name_insensitive = enum_values .index_by { |v| v.read_attribute(enum_spec.name_attr).downcase } .with_indifferent_access .freeze @required_by_ordinal = required_enum_constants .map { |name| by_name.fetch(name) } .index_by(&:ordinal) .freeze @insensitive_lookup = (by_name.size == by_name_insensitive.size) freeze end |
Instance Attribute Details
#by_name ⇒ Object (readonly)
Returns the value of attribute by_name.
11 12 13 |
# File 'lib/persistent_enum/acts_as_enum.rb', line 11 def by_name @by_name end |
#by_name_insensitive ⇒ Object (readonly)
Returns the value of attribute by_name_insensitive.
11 12 13 |
# File 'lib/persistent_enum/acts_as_enum.rb', line 11 def by_name_insensitive @by_name_insensitive end |
#by_ordinal ⇒ Object (readonly)
Returns the value of attribute by_ordinal.
11 12 13 |
# File 'lib/persistent_enum/acts_as_enum.rb', line 11 def by_ordinal @by_ordinal end |
#enum_spec ⇒ Object (readonly)
Returns the value of attribute enum_spec.
11 12 13 |
# File 'lib/persistent_enum/acts_as_enum.rb', line 11 def enum_spec @enum_spec end |
#required_by_ordinal ⇒ Object (readonly)
Returns the value of attribute required_by_ordinal.
11 12 13 |
# File 'lib/persistent_enum/acts_as_enum.rb', line 11 def required_by_ordinal @required_by_ordinal end |
Instance Method Details
#insensitive_lookup? ⇒ Boolean
44 45 46 |
# File 'lib/persistent_enum/acts_as_enum.rb', line 44 def insensitive_lookup? @insensitive_lookup end |