class JsonValidation::Validators::AdditionalProperties
Public Instance Methods
find_additional_properties(fragment, record)
click to toggle source
# File lib/json_validation/validators/additional_properties.rb, line 25 def find_additional_properties(fragment, record) record.reject {|k, v| fragment.fetch('properties', {}).keys.include?(k) }.reject {|k, v| fragment.fetch('patternProperties', {}).keys.any? {|pattern| rx = Regexp.new(pattern) rx.match(k) } } end
inner_validator()
click to toggle source
# File lib/json_validation/validators/additional_properties.rb, line 21 def inner_validator @inner_validator ||= build_validator(fragment["additionalProperties"]) end
validate(record)
click to toggle source
# File lib/json_validation/validators/additional_properties.rb, line 6 def validate(record) case fragment['additionalProperties'] when true true when false find_additional_properties(fragment, record).empty? when Hash find_additional_properties(fragment, record).values.all? {|value| inner_validator.validate(value) } else raise "Unexpected type for fragment['additionalProperties']" end end