Module: RubyEnum::ClassMethods
- Defined in:
- lib/ruby_enum.rb
Instance Method Summary collapse
- #[](name) ⇒ Object
- #all ⇒ Object
-
#const_missing(name) ⇒ Object
enable retrieving enumeration values as constants.
-
#enum(name, value = nil) ⇒ Object
defines enumeration values.
- #find_by_value(value) ⇒ Object
- #find_by_value!(value) ⇒ Object
Instance Method Details
#[](name) ⇒ Object
76 77 78 |
# File 'lib/ruby_enum.rb', line 76 def [](name) _enumeration_values[_normalize(name)] end |
#all ⇒ Object
80 81 82 |
# File 'lib/ruby_enum.rb', line 80 def all _enumeration_values.map { |_, instance| instance } end |
#const_missing(name) ⇒ Object
enable retrieving enumeration values as constants
59 60 61 |
# File 'lib/ruby_enum.rb', line 59 def const_missing(name) self[name] || super end |
#enum(name, value = nil) ⇒ Object
defines enumeration values
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/ruby_enum.rb', line 64 def enum(name, value = nil) normalized_name = _normalize name if self[normalized_name] raise ArgumentError, "An enumeration value for #{normalized_name} has " \ "already been defined in #{self.name}." else value = normalized_name.to_s unless value _define_instance_accessor_for normalized_name _enumeration_values[normalized_name] = new(normalized_name, value) end end |
#find_by_value(value) ⇒ Object
93 94 95 |
# File 'lib/ruby_enum.rb', line 93 def find_by_value(value) all.find { |instance| instance.value == value } end |
#find_by_value!(value) ⇒ Object
84 85 86 87 88 89 90 91 |
# File 'lib/ruby_enum.rb', line 84 def find_by_value!(value) result = find_by_value(value) unless result raise ArgumentError, "No enumeration value with associated value #{value} found" end result end |