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

Returns:



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

def open?
  @open == true
end