3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/graphiti/hash_renderer.rb', line 3
def to_hash(fields: nil, include: {})
{}.tap do |hash|
fields_list = fields[jsonapi_type] if fields
attrs = requested_attributes(fields_list).each_with_object({}) { |(k, v), h|
h[k] = instance_eval(&v)
}
rels = @_relationships.select { |k, v| !!include[k] }
rels.each_with_object({}) do |(k, v), h|
serializers = v.send(:resources)
attrs[k] = if serializers.is_a?(Array)
serializers.map do |rr| rr.to_hash(fields: fields, include: include[k])
end
elsif serializers.nil?
nil
else
serializers.to_hash(fields: fields, include: include[k])
end
end
hash[:id] = jsonapi_id
hash.merge!(attrs) if attrs.any?
end
end
|