class Fitting::Cover::JSONSchema
Public Class Methods
new(json_schema)
click to toggle source
# File lib/fitting/cover/json_schema.rb, line 4 def initialize(json_schema) @json_schema = json_schema @combinations = [] end
Public Instance Methods
combi()
click to toggle source
# File lib/fitting/cover/json_schema.rb, line 9 def combi inception(@json_schema, @combinations).each do |combination| combination[0] = @json_schema.merge(combination[0]) combination[1] = ['required', combination[1]] end end
inception(json_schema, combinations)
click to toggle source
# File lib/fitting/cover/json_schema.rb, line 16 def inception(json_schema, combinations) json_schema.each do |key, value| if key == 'properties' and json_schema['required'] != value.keys schema = json_schema.dup one_of = schema.delete('required') || [] schema['properties'].each_key do |property| next if one_of.include?(property) combinations.push([schema.merge('required' => one_of + [property]), "required.#{property}"]) end elsif value.is_a?(Hash) com = inception(value, []) com.each do |combination| combination[0] = { key => value.merge(combination[0])} combination[1] = "#{key}.#{combination[1]}" end combinations += com end end combinations end