Method: Schemacop::V3::OneOfNode#_validate

Defined in:
lib/schemacop/v3/one_of_node.rb

#_validate(data, result:) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/schemacop/v3/one_of_node.rb', line 26

def _validate(data, result:)
  if options[:treat_blank_as_nil] && data.blank? && !data.is_a?(FalseClass)
    data = nil
  end

  super_data = super(data, result: result)
  return if super_data.nil?

  matches = matches(super_data)

  if matches.size == 1
    matches.first._validate(super_data, result: result)
  else
    result.error <<~PLAIN.strip
      Matches #{matches.size} schemas but should match exactly 1:
      #{schema_messages(data).join("\n")}
    PLAIN
  end
end