Sha256: efc19d2dfe21599c9d862d0af8c2f839b4c8486e69f1c814abe4eaba689f2673
Contents?: true
Size: 1.19 KB
Versions: 14
Compression:
Stored size: 1.19 KB
Contents
module Schemacop module V3 class OneOfNode < CombinationNode def type :oneOf end def self.allowed_options super + %i[treat_blank_as_nil] end 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 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 def validate_self if @items.size < 2 fail 'Node "one_of" makes only sense with at least 2 items.' end end end end end
Version data entries
14 entries across 14 versions & 1 rubygems