Method: Fitting::Doc::ContentType#merge_definitions

Defined in:
lib/fitting/doc/content_type.rb

#merge_definitions(sv, definitions) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/fitting/doc/content_type.rb', line 114

def merge_definitions(sv, definitions)
  if sv['body']["properties"]
    res = sv['body']["properties"]
  elsif sv['body']['type'] != 'array'
    res = sv['body']
  end
  definitions.each_pair do |key, value|
    while JSON.dump(res).include?("\"$ref\":\"#/definitions/#{key}\"") do
      new_res_array = JSON.dump(res).split('{')
      index = new_res_array.index { |js| js.include?("\"$ref\":\"#/definitions/#{key}\"") }
      if index != nil
        def_size = "\"$ref\":\"#/definitions/#{key}\"".size
        new_res_array[index] = JSON.dump(value)[1..-2] + new_res_array[index][def_size..-1]
        res = JSON.load(new_res_array.join("{"))
      end
    end
  end
  if res == nil
    nil
  else
    check_body(res, sv)
  end
end