Module: Crystalline::Enum::ClassMethods

Defined in:
lib/crystalline/types.rb

Instance Method Summary collapse

Instance Method Details

#deserialize(val) ⇒ Object



131
132
133
134
135
136
137
138
139
# File 'lib/crystalline/types.rb', line 131

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



110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/crystalline/types.rb', line 110

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



123
124
125
# File 'lib/crystalline/types.rb', line 123

def open!
  @open = true
end

#open?Boolean

Returns:



127
128
129
# File 'lib/crystalline/types.rb', line 127

def open?
  @open == true
end