class Schemacop::V3::OneOfNode

Public Class Methods

allowed_options() click to toggle source
Calls superclass method
# File lib/schemacop/v3/one_of_node.rb, line 8
def self.allowed_options
  super + %i[treat_blank_as_nil]
end

Public Instance Methods

_validate(data, result:) click to toggle source
Calls superclass method
# 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 "Matches #{matches.size} definitions but should match exactly 1."
  end
end
cast(value) click to toggle source
# File lib/schemacop/v3/one_of_node.rb, line 12
def cast(value)
  item = match(value)

  unless item
    if options[:treat_blank_as_nil] && value.blank? && !value.is_a?(FalseClass)
      return nil
    else
      return value
    end
  end

  return item.cast(value)
end
type() click to toggle source
# File lib/schemacop/v3/one_of_node.rb, line 4
def type
  :oneOf
end
validate_self() click to toggle source
# File lib/schemacop/v3/one_of_node.rb, line 43
def validate_self
  if @items.size < 2
    fail 'Node "one_of" makes only sense with at least 2 items.'
  end
end