15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/open-api/objects.rb', line 15
def resolve_refs(metadata, definitions, controller, opts = {})
resolve_proc = -> (object_name) { controller.open_api_object_metadata(object_name) }
if metadata.is_a?(Hash)
Hash[(metadata.map do |key, value|
value = resolve_refs(value, definitions, controller, opts)
if ['schema', 'items', '$ref'].include?(key.to_s) && value.respond_to?(:to_sym) &&
!(object = resolve_ref(value.to_sym, resolve_proc)).nil?
fail 'Expected Hash for definitions!' unless definitions.is_a?(Hash)
object = resolve_refs(object, definitions, controller, opts)
add_definition(definitions, value.to_sym, object)
next [:'$ref', "#/definitions/#{value}"] if key.to_s == '$ref'
next [key.to_sym, { :'$ref' => "#/definitions/#{value}" }]
end
[key, value]
end)]
elsif metadata.is_a?(Array)
metadata.map do |elem|
resolve_refs(elem, definitions, controller, opts)
end
else
metadata
end
end
|