Class: Enum
- Inherits:
-
Object
show all
- Includes:
- Enumerable
- Defined in:
- lib/enum.rb,
lib/enum/version.rb
Defined Under Namespace
Modules: Helpers
Classes: EnumValue
Constant Summary
collapse
- VERSION =
'2.0.2'
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name, klass = nil, hash = {}) ⇒ Enum
7
8
9
10
11
12
|
# File 'lib/enum.rb', line 7
def initialize(name, klass=nil, hash={})
klass, hash = nil, klass unless klass.is_a?(Module)
@name, @klass = name, klass
map_hash(hash)
generate_methods
end
|
Instance Attribute Details
Returns the value of attribute by_name.
5
6
7
|
# File 'lib/enum.rb', line 5
def by_name
@by_name
end
|
Returns the value of attribute by_value.
5
6
7
|
# File 'lib/enum.rb', line 5
def by_value
@by_value
end
|
Returns the value of attribute klass.
5
6
7
|
# File 'lib/enum.rb', line 5
def klass
@klass
end
|
Returns the value of attribute name.
5
6
7
|
# File 'lib/enum.rb', line 5
def name
@name
end
|
Instance Method Details
#[](*name_or_values) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/enum.rb', line 31
def [](*name_or_values)
return name_or_values.map { |name_or_value| get(name_or_value) } if name_or_values.length > 1
name_or_value = name_or_values.first
get(name_or_value) or raise "#{inspect} does not know #{name_or_value.inspect}"
end
|
#each(&block) ⇒ Object
27
28
29
|
# File 'lib/enum.rb', line 27
def each(&block)
@by_name.each_value(&block)
end
|
#get(*name_or_values) ⇒ Object
38
39
40
41
42
43
|
# File 'lib/enum.rb', line 38
def get(*name_or_values)
return name_or_values.map { |name_or_value| get(name_or_value) } if name_or_values.length > 1
name_or_value = name_or_values.first
@by_name_s[name_or_value.to_s] || @by_value_s[name_or_value.to_s]
end
|
17
18
19
|
# File 'lib/enum.rb', line 17
def inspect
"#{to_s}(#{@by_name.map { |n, ev| "#{n.inspect} => #{ev.value.inspect}"}.join(", ")})"
end
|
21
22
23
|
# File 'lib/enum.rb', line 21
def names
@by_name.keys
end
|
45
46
47
|
# File 'lib/enum.rb', line 45
def options
Hash[map { |ev| [ev.t, ev] }]
end
|
14
15
16
|
# File 'lib/enum.rb', line 14
def to_s
@klass ? "#{@klass.name}::#{@name}" : @name.to_s
end
|
24
25
26
|
# File 'lib/enum.rb', line 24
def values
@by_value.keys
end
|