Method: Code42::AttributeSerializer#deserialize_value

Defined in:
lib/code42/attribute_serializer.rb

#deserialize_value(key, value) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/code42/attribute_serializer.rb', line 54

def deserialize_value(key, value)
  if klass = attribute_for(key).try(:as)
    if attribute_for(key).try(:collection)
      klass.collection_from_response(value)
    elsif klass.respond_to?(:from_response)
      klass.from_response(value)
    elsif klass.respond_to?(:parse)
      klass.parse(value) unless value.nil?
    else
      value
    end
  else
    if value.is_a?(Hash)
      value.inject({}) do |h,(key, value)|
        h.merge! deserialize(key, value)
      end
    elsif value.is_a?(Array)
      value.map { |item| deserialize_value(nil, item) }
    else
      value
    end
  end
end