Module: Ruby::Enum::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#const_missing(key) ⇒ Object



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

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.



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

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

#each(&block) ⇒ Object

Iterate over all enumerated values. Required for Enumerable mixin



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

def each(&block)
  @_enum_hash.each(&block)
end

#keysObject

Returns all enum keys.



55
56
57
# File 'lib/ruby-enum/enum.rb', line 55

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

#parse(s) ⇒ Object

Attempt to parse an enumerated value.

Parameters

s

The string to parse.

Returns an enumerated value or nil.



46
47
48
49
50
51
52
# File 'lib/ruby-enum/enum.rb', line 46

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



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

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

#valuesObject

Returns all enum values.



60
61
62
# File 'lib/ruby-enum/enum.rb', line 60

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