module Ruby::Enum::ClassMethods
Public Instance Methods
const_missing(key)
click to toggle source
# File lib/ruby-enum/enum.rb, line 47 def const_missing(key) raise Ruby::Enum::Errors::UninitializedConstantError, name: name, key: key end
define(key, value = key)
click to toggle source
Define an enumerated value.
Parameters¶ ↑
- key
-
Enumerator key.
- value
-
Enumerator value.
# File lib/ruby-enum/enum.rb, line 25 def define(key, value = key) @_enum_hash ||= {} @_enums_by_value ||= {} validate_key!(key) validate_value!(value) store_new_instance(key, value) if upper?(key.to_s) const_set key, value else define_singleton_method(key) { value } end end
each(&block)
click to toggle source
Iterate over all enumerated values. Required for Enumerable mixin
# File lib/ruby-enum/enum.rb, line 53 def each(&block) @_enum_hash.each(&block) end
each_key() { |key| ... }
click to toggle source
Iterate over all enumerated keys. Required for Enumerable mixin
# File lib/ruby-enum/enum.rb, line 140 def each_key(&_block) @_enum_hash.each_value do |v| yield v.key end end
each_value() { |value| ... }
click to toggle source
Iterate over all enumerated values. Required for Enumerable mixin
# File lib/ruby-enum/enum.rb, line 132 def each_value(&_block) @_enum_hash.each_value do |v| yield v.value end end
key(v)
click to toggle source
key?(k)
click to toggle source
keys()
click to toggle source
Returns all enum keys.
# File lib/ruby-enum/enum.rb, line 115 def keys @_enum_hash.values.map(&:key) end
parse(k)
click to toggle source
store_new_instance(key, value)
click to toggle source
# File lib/ruby-enum/enum.rb, line 41 def store_new_instance(key, value) new_instance = new(key, value) @_enum_hash[key] = new_instance @_enums_by_value[value] = new_instance end
to_h()
click to toggle source
# File lib/ruby-enum/enum.rb, line 146 def to_h Hash[@_enum_hash.map do |key, enum| [key, enum.value] end] end
value(k)
click to toggle source
value?(v)
click to toggle source
values()
click to toggle source
Returns all enum values.
# File lib/ruby-enum/enum.rb, line 120 def values result = @_enum_hash.values.map(&:value) if superclass < Ruby::Enum superclass.values + result else result end end
Private Instance Methods
upper?(s)
click to toggle source
# File lib/ruby-enum/enum.rb, line 154 def upper?(s) !/[[:upper:]]/.match(s).nil? end
validate_key!(key)
click to toggle source
# File lib/ruby-enum/enum.rb, line 158 def validate_key!(key) return unless @_enum_hash.key?(key) raise Ruby::Enum::Errors::DuplicateKeyError, name: name, key: key end
validate_value!(value)
click to toggle source
# File lib/ruby-enum/enum.rb, line 164 def validate_value!(value) return unless @_enums_by_value.key?(value) raise Ruby::Enum::Errors::DuplicateValueError, name: name, value: value end