lib/fitting/cover/json_schema_enum.rb in fitting-2.12.1 vs lib/fitting/cover/json_schema_enum.rb in fitting-2.13.0

- old
+ new

@@ -1,88 +1,36 @@ module Fitting class Cover class JSONSchemaEnum def initialize(json_schema) @json_schema = json_schema + @combinations = [] end def combi - return @combinations if @combinations - @combinations = [] - - return @combinations unless @json_schema['properties'] - @combinations = new_super_each(@json_schema['properties'], { 'properties' => nil }, @json_schema, @combinations, 'properties') - - @combinations + inception(@json_schema, @combinations).each do |combination| + combination[0] = @json_schema.merge(combination[0]) + combination[1] = ['enum', combination[1]] + end end - def new_super_each(json_schema, old_keys_hash, lol_schema, combinations, old_key) + def inception(json_schema, combinations) json_schema.each do |key, value| - next unless value.is_a?(Hash) - - new_keys_hash = clone_hash(old_keys_hash) - add_super_key(new_keys_hash, key) - - combinations = new_super_each(value, new_keys_hash, lol_schema, combinations, [old_key, key].compact.join('.')) - - qwe = new_enum(value) - qwe.map do |asd| - new_json_shema = clone_hash(lol_schema) - super_merge(new_keys_hash, asd[0], new_json_shema) - combinations.push([new_json_shema, [asd[1][0], [old_key, key, asd[1][1]].compact.join('.')]]) + if key == 'enum' + one_of = json_schema.delete('enum') + one_of.each_index do |index| + combinations.push([json_schema.merge('enum' => [one_of[index]]), "enum.#{one_of[index]}"]) + end + elsif value.is_a?(Hash) + inception(value, combinations) + combinations.each do |combination| + combination[0] = { key => combination[0]} + combination[1] = "#{key}.#{combination[1]}" + end end end - combinations - end - def add_super_key(vbn, new_key) - vbn.each do |key, value| - if value - add_super_key(value, new_key) - else - vbn[key] = { new_key => nil } - end - end - end - - def super_merge(vbn, asd, old_json_schema) - vbn.each do |key, value| - if value - super_merge(value, asd, old_json_schema[key]) - else - old_json_schema[key].merge!(asd) - end - end - old_json_schema - end - - def clone_hash(old_json_schema) - new_json_schema = {} - old_json_schema.each do |key, value| - if value.is_a?(Hash) - new_json_schema.merge!(key => clone_hash(value)) - elsif value - new_json_schema.merge!(key => value.clone) - else - new_json_schema.merge!(key => nil) - end - end - new_json_schema - end - - def new_enum(json_schema) - res = [] - new_keys(json_schema).map do |new_key| - new_json_shema = json_schema.dup - new_json_shema['enum'] = [new_key] - res.push([new_json_shema, ['enum', new_key]]) - end - res - end - - def new_keys(json_schema) - return [] unless json_schema['enum'] - json_schema['enum'] + combinations end end end end