Module: Crystalline::Enum::ClassMethods
- Defined in:
- lib/crystalline/types.rb
Instance Method Summary collapse
Instance Method Details
#deserialize(val) ⇒ Object
78 79 80 81 82 83 84 85 86 |
# File 'lib/crystalline/types.rb', line 78 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
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/crystalline/types.rb', line 57 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
70 71 72 |
# File 'lib/crystalline/types.rb', line 70 def open! @open = true end |