Class: SimpleSerializer::Deserializer

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_serializer/deserializer.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, data) ⇒ Deserializer

Returns a new instance of Deserializer.



56
57
58
59
# File 'lib/simple_serializer/deserializer.rb', line 56

def initialize(object, data)
  @object = object
  @data = data
end

Class Attribute Details

._attributesObject

Returns the value of attribute _attributes.



25
26
27
# File 'lib/simple_serializer/deserializer.rb', line 25

def _attributes
  @_attributes
end

Instance Attribute Details

#objectObject

Returns the value of attribute object.



54
55
56
# File 'lib/simple_serializer/deserializer.rb', line 54

def object
  @object
end

Class Method Details

.data_attributes(*attrs) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/simple_serializer/deserializer.rb', line 31

def data_attributes(*attrs)
  @_attributes.concat attrs

  attrs.each do |attr|
    define_method attr do |datum|
      datum
    end unless method_defined?(attr)

    define_method "set_#{attr}" do |datum|
      object.send("#{attr}=", send(attr, datum))
    end unless method_defined?("set_#{attr}")
  end
end

.deserialize(object, data) ⇒ Object



49
50
51
# File 'lib/simple_serializer/deserializer.rb', line 49

def deserialize(object, data)
  self.new(object, data).deserialize
end

.deserialize_array(objects, data) ⇒ Object



45
46
47
# File 'lib/simple_serializer/deserializer.rb', line 45

def deserialize_array(objects, data)
  objects.zip(data).map { |obj, datum| deserialize(obj, datum) }
end

.inherited(base) ⇒ Object



27
28
29
# File 'lib/simple_serializer/deserializer.rb', line 27

def inherited(base)
  base._attributes = []
end

Instance Method Details

#deserializeObject



61
62
63
64
65
66
# File 'lib/simple_serializer/deserializer.rb', line 61

def deserialize
  self.class._attributes.dup.each do |name|
    send("set_#{name}", @data[name])
  end
  object
end