Module: Class::Enum::ClassMethods
- Defined in:
- lib/class/enum.rb
Instance Method Summary collapse
- #fetch(*args) ⇒ Object
-
#key?(name) ⇒ Boolean
Checks a field of given name exists You can also do like ‘Animal::DOG.instance_of?(Animal)`.
-
#keys ⇒ Array<Symbol>
Gets an array of enum field names.
-
#to_h ⇒ Hash{Symbol, Object}
Gets an hash of enum fields.
-
#value(name) ⇒ Object
Gets a field by given name You can also do like ‘Animal::DOG`.
-
#value?(obj) ⇒ Boolean
Checks given value is a field of this enum.
-
#values ⇒ Array
(also: #to_a)
Gets an array of enum fields.
Instance Method Details
#fetch(name) ⇒ Object #fetch(name, default) ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/class/enum.rb', line 112 def fetch(*args) case args.length when 1 name = args[0] if key?(name) value(name) else raise KeyError, "key not found: #{name.inspect}" end when 2 name = args[0] default = args[1] if key?(name) value(name) else default end else raise ArgumentError, "Invalid arguments length" end end |
#key?(name) ⇒ Boolean
Checks a field of given name exists You can also do like ‘Animal::DOG.instance_of?(Animal)`
61 62 63 64 |
# File 'lib/class/enum.rb', line 61 def key?(name) name = name.to_sym @enum_fields.key?(name) end |
#keys ⇒ Array<Symbol>
Gets an array of enum field names
92 93 94 |
# File 'lib/class/enum.rb', line 92 def keys @enum_fields.keys end |
#to_h ⇒ Hash{Symbol, Object}
Gets an hash of enum fields
98 99 100 |
# File 'lib/class/enum.rb', line 98 def to_h @enum_fields.dup end |
#value(name) ⇒ Object
Gets a field by given name You can also do like ‘Animal::DOG`
79 80 81 |
# File 'lib/class/enum.rb', line 79 def value(name) @enum_fields[name.to_sym] end |
#value?(obj) ⇒ Boolean
Checks given value is a field of this enum
70 71 72 |
# File 'lib/class/enum.rb', line 70 def value?(obj) @enum_fields.value?(obj) end |
#values ⇒ Array Also known as: to_a
Gets an array of enum fields
85 86 87 |
# File 'lib/class/enum.rb', line 85 def values @enum_fields.values end |