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.



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

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

Class Attribute Details

._object_attributesObject

Returns the value of attribute _object_attributes.



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

def _object_attributes
  @_object_attributes
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



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

def data
  @data
end

#objectObject (readonly)

Returns the value of attribute object.



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

def object
  @object
end

Class Method Details

.deserialize(object, data) ⇒ Object



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

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

.deserialize_array(objects, data) ⇒ Object



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

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

.inherited(base) ⇒ Object



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

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

.object_attributes(*attrs) ⇒ Object



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

def object_attributes(*attrs)
  @_object_attributes.concat attrs

  attrs.each do |attr|
    define_method attr do
      @data[attr]
    end unless method_defined?(attr)

    define_method "set_#{attr}" do
      object.send("#{attr}=", send(attr)) if @data.has_key?(attr)
    end unless method_defined?("set_#{attr}")
  end
end

Instance Method Details

#deserializeObject



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

def deserialize
  self.class._object_attributes.dup.each do |name|
    send("set_#{name}")
  end
  object
end