Sha256: e7aef712d731d26ca54822463ad7fd3e33aeb177f74f5bde922d08bcc6a2bf4f
Contents?: true
Size: 1.32 KB
Versions: 8
Compression:
Stored size: 1.32 KB
Contents
module Fitting class Cover class JSONSchema attr_reader :json_schema, :combinations def initialize(json_schema) @json_schema = json_schema @combinations = [] end def combi inception(json_schema, combinations).each do |combination| combination[0] = json_schema.merge(combination[0]) combination[1] = ['required', combination[1]] end end def inception(json_schema, combinations) json_schema.each do |key, value| if (key == 'properties') && value && (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) next if property == 'type' || property == 'properties' 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 end end end
Version data entries
8 entries across 8 versions & 1 rubygems