Class: Schemacop::V3::OneOfNode
Instance Attribute Summary
Attributes inherited from Node
#as, #default, #description, #name, #options, #parent, #title
Class Method Summary
collapse
Instance Method Summary
collapse
#add_child, #as_json, dsl_methods, #init
Methods inherited from Node
#allowed_types, #as_json, #children, create, #create, dsl_methods, #dsl_node, #dsl_scm, #init, #initialize, #required?, resolve_class, #schemas, supports_children, supports_children_options, #used_external_schemas, #validate
Class Method Details
.allowed_options ⇒ Object
8
9
10
|
# File 'lib/schemacop/v3/one_of_node.rb', line 8
def self.allowed_options
super + %i[treat_blank_as_nil]
end
|
Instance Method Details
#_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
|
#cast(value) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# 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 ⇒ Object
4
5
6
|
# File 'lib/schemacop/v3/one_of_node.rb', line 4
def type
:oneOf
end
|
#validate_self ⇒ Object
46
47
48
49
50
|
# File 'lib/schemacop/v3/one_of_node.rb', line 46
def validate_self
if @items.size < 2
fail 'Node "one_of" makes only sense with at least 2 items.'
end
end
|