Class: JSONSkooma::Keywords::Applicator::OneOf
- Defined in:
- lib/json_skooma/keywords/applicator/one_of.rb
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods inherited from Base
#each_schema, inherited, #initialize, #instance_types, #key, #resolve, set_defaults, #static, value_schema=
Constructor Details
This class inherits a constructor from JSONSkooma::Keywords::Base
Instance Method Details
#evaluate(instance, result) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/json_skooma/keywords/applicator/one_of.rb', line 10 def evaluate(instance, result) valid_indices = [] err_indices = [] json.each.with_index do |subschema, index| result.call(instance, index.to_s) do |subresult| subschema.evaluate(instance, subresult) if subresult.passed? valid_indices << index else err_indices << index end end end return if valid_indices.size == 1 result.failure( "The instance must be valid against exactly one subschema; " \ "it is valid against #{valid_indices} and invalid against #{err_indices}'" ) end |