Class: Enum
- Inherits:
-
Hash
- Object
- Hash
- Enum
- Defined in:
- lib/enum.rb
Instance Method Summary collapse
-
#[](id_or_value) ⇒ Object
Public: Access the number/value of member.
-
#except(*keys) ⇒ Object
Public: Create a subset of enum, preserve all items but specified ones.
-
#initialize(*members) ⇒ Enum
constructor
Public: Initialize an enum.
-
#only(*keys) ⇒ Object
Public: Create a subset of enum, only include specified keys.
-
#valid?(member) ⇒ Boolean
Public: Check if supplied member is valid.
Constructor Details
#initialize(*members) ⇒ Enum
Public: Initialize an enum.
members - Array of enum members or Hash of enum members.
Array of enum members may also contain a hash of options:
:start - the number of first enum member. Defaults to 1.
Examples
FRUITS = Enum.new(:apple, :orange, :kiwi) # array
FRUITS = Enum.new(:apple, :orange, :kiwi, start: 0) # array
FRUITS = Enum.new(apple: 1, orange: 2, kiwi: 3) # hash
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/enum.rb', line 16 def initialize(*members) super({}) if members[0].is_a?(Hash) # hash update Hash[members[0]] else # array = members. start = .fetch(:start) { 1 } update Hash[members.zip(start..members.count + start)] end end |
Instance Method Details
#[](id_or_value) ⇒ Object
Public: Access the number/value of member.
ids_or_value - number or value of member.
Returns value if number was provided, and number if value was provided.
35 36 37 |
# File 'lib/enum.rb', line 35 def [](id_or_value) fetch(id_or_value) { key(id_or_value) } end |
#except(*keys) ⇒ Object
Public: Create a subset of enum, preserve all items but specified ones.
50 51 52 |
# File 'lib/enum.rb', line 50 def except(*keys) dup.tap { |d| d.delete_if { |k| keys.include?(k) } } end |
#only(*keys) ⇒ Object
Public: Create a subset of enum, only include specified keys.
45 46 47 |
# File 'lib/enum.rb', line 45 def only(*keys) dup.tap { |d| d.keep_if { |k| keys.include?(k) } } end |
#valid?(member) ⇒ Boolean
Public: Check if supplied member is valid.
40 41 42 |
# File 'lib/enum.rb', line 40 def valid?(member) has_key?(member) end |