Module: Ruby::Enum::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#const_missing(key) ⇒ Object



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

def const_missing(key)
  if @_enum_hash[key]
    @_enum_hash[key].value
  else
    raise 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.



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

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

#each(&block) ⇒ Object

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



37
38
39
40
41
# File 'lib/ruby-enum/enum.rb', line 37

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

#keysObject

Returns all enum keys.



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

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.



49
50
51
52
53
54
55
56
57
# File 'lib/ruby-enum/enum.rb', line 49

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

#to_hObject



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

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

#valuesObject

Returns all enum values.



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

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