Method: JSONSchemer::Draft202012::Vocab::Applicator::PatternProperties#validate

Defined in:
lib/json_schemer/draft202012/vocab/applicator.rb

#validate(instance, instance_location, keyword_location, context) ⇒ Object



277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
# File 'lib/json_schemer/draft202012/vocab/applicator.rb', line 277

def validate(instance, instance_location, keyword_location, context)
  return result(instance, instance_location, keyword_location, true) unless instance.is_a?(Hash)

  evaluated = Set[]
  nested = []

  parsed.each do |pattern, subschema|
    regexp = root.resolve_regexp(pattern)
    instance.each do |key, value|
      if regexp.match?(key)
        evaluated << key
        nested << subschema.validate_instance(value, join_location(instance_location, key), join_location(keyword_location, pattern), context)
      end
    end
  end

  result(instance, instance_location, keyword_location, nested.all?(&:valid), nested, :annotation => evaluated.to_a)
end