5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/zodra/response_serializer.rb', line 5
def self.call(object, definition, key_format: Zodra.configuration.key_format, type_resolver: TypeRegistry.global)
result = {}
definition.attributes.each do |attr_name, attribute|
value = (object, attr_name)
serialized_key = transform_key(attr_name, key_format)
if attribute.reference?
referenced = type_resolver.find!(attribute.reference_name)
result[serialized_key] = value.nil? ? nil : call(value, referenced, key_format:, type_resolver:)
elsif attribute.array? && attribute.of
referenced = type_resolver.find(attribute.of)
result[serialized_key] = serialize_array(value, referenced, key_format:, type_resolver:)
else
result[serialized_key] = value
end
end
result
end
|