Module: Crystalline::Enum::ClassMethods

Defined in:
lib/crystalline/types.rb

Instance Method Summary collapse

Instance Method Details

#deserialize(val) ⇒ Object



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

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



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

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



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

def open!
  @open = true
end

#open?Boolean

Returns:



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

def open?
  @open == true
end