Module: Crystalline::Enum::ClassMethods
- Defined in:
- lib/crystalline/types.rb
Instance Method Summary collapse
Instance Method Details
#deserialize(val) ⇒ Object
132 133 134 135 136 137 138 139 140 |
# File 'lib/crystalline/types.rb', line 132 def deserialize(val) if @mapping.include? val @mapping[val] elsif open? new(val) else raise "Invalid value for enum: #{val}" end end |
#enums(&blk) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/crystalline/types.rb', line 111 def enums(&blk) @mapping = {} yield constants(false).each do |const_name| instance = const_get(const_name, false) unless instance.is_a? self raise 'Enum constants must be instances of the Enum class (e.g. `Foo = new`)' end @mapping[instance.serialize] = instance end end |
#open! ⇒ Object
124 125 126 |
# File 'lib/crystalline/types.rb', line 124 def open! @open = true end |
#open? ⇒ Boolean
128 129 130 |
# File 'lib/crystalline/types.rb', line 128 def open? @open == true end |