Module: Crystalline::Enum

Defined in:
lib/crystalline/types.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.enums(&blk) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/crystalline/types.rb', line 53

def self.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

Instance Method Details

#deserialize(val) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/crystalline/types.rb', line 70

def deserialize(val)
  if @mapping.include? val
    @mapping[val]
  else
    raise "Invalid value for enum: #{val}"
  end
end

#initialize(val) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/crystalline/types.rb', line 44

def initialize(val)
  puts methods
  if instance_methods(false).include?(:initialize)
    super(val)
  else
    @val = val
  end
end

#serializeObject



66
67
68
# File 'lib/crystalline/types.rb', line 66

def serialize
  @val
end