Module: OpenApi::Objects

Defined in:
lib/open-api/objects.rb

Defined Under Namespace

Modules: Controller

Constant Summary collapse

METADATA_MERGE =
{
    properties: (lambda do |properties, merge_properties, opts|
      OpenApi::Utils.verify_and_merge_hash(properties, merge_properties, 'properties',
          opts.merge(recursive_merge: true))
    end)
}

Class Method Summary collapse

Class Method Details

.merge_metadata(metadata, merge_metadata, opts = {}) ⇒ Object



11
12
13
# File 'lib/open-api/objects.rb', line 11

def (, , opts = {})
  OpenApi::Utils.merge_hash(, , opts.merge(merge_by: ))
end

.resolve_refs(metadata, definitions, controller, opts = {}) ⇒ Object



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(, definitions, controller, opts = {})
  resolve_proc = -> (object_name) { controller.(object_name) }
  if .is_a?(Hash)
    Hash[(.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 .is_a?(Array)
    .map do |elem|
      resolve_refs(elem, definitions, controller, opts)
    end
  else
    
  end
end