Module: Ruby::Enum::ClassMethods

Defined in:
lib/ruby-enum/enum.rb

Instance Method Summary collapse

Instance Method Details

#const_missing(key) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/ruby-enum/enum.rb', line 25

def const_missing(key)
  if @_enum_hash[key]
    @_enum_hash[key].value
  else
    fail Ruby::Enum::Errors::UninitializedConstantError.new(name: name, key: key)
  end
end

#define(key, value) ⇒ Object

Define an enumerated value.

Parameters

key

Enumerator key.

value

Enumerator value.



20
21
22
23
# File 'lib/ruby-enum/enum.rb', line 20

def define(key, value)
  @_enum_hash ||= {}
  @_enum_hash[key] = new(key, value)
end

#each(&_block) ⇒ Object

Iterate over all enumerated values. Yields a key and an enumerated instance.



35
36
37
38
39
# File 'lib/ruby-enum/enum.rb', line 35

def each(&_block)
  @_enum_hash.each do |key, value|
    yield key, value
  end
end

#keysObject

Returns all enum keys.



64
65
66
# File 'lib/ruby-enum/enum.rb', line 64

def keys
  @_enum_hash.values.map(&:key)
end

#map(&_block) ⇒ Object

Map all enumerated values. Yields a key and an enumerated instance.



43
44
45
46
47
# File 'lib/ruby-enum/enum.rb', line 43

def map(&_block)
  @_enum_hash.map do |key, value|
    yield key, value
  end
end

#parse(s) ⇒ Object

Attempt to parse an enumerated value.

Parameters

s

The string to parse.

Returns an enumerated value or nil.



55
56
57
58
59
60
61
# File 'lib/ruby-enum/enum.rb', line 55

def parse(s)
  s = s.to_s.upcase
  each do |key, enum|
    return enum.value if key.to_s.upcase == s
  end
  nil
end

#to_hObject



73
74
75
76
77
# File 'lib/ruby-enum/enum.rb', line 73

def to_h
  Hash[@_enum_hash.map do |key, enum|
    [key, enum.value]
  end]
end

#valuesObject

Returns all enum values.



69
70
71
# File 'lib/ruby-enum/enum.rb', line 69

def values
  @_enum_hash.values.map(&:value)
end