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
|