class Schemacop::V2::FieldNode
Attributes
name[R]
Public Class Methods
new(name, required, options = {}, &block)
click to toggle source
Calls superclass method
# File lib/schemacop/v2/field_node.rb, line 5 def initialize(name, required, options = {}, &block) if options.any? fail Exceptions::InvalidSchemaError, 'Node does not support options.' end super({}, &block) @name = name @required = required end
Public Instance Methods
validate(data, collector)
click to toggle source
Calls superclass method
# File lib/schemacop/v2/field_node.rb, line 16 def validate(data, collector) if !data.key?(name) && @required collector.error "Missing key #{name.inspect}." end collector.path "/#{name}", name, :hash do value, default_applied = apply_default!(data[name], collector) unless data.key?(name) || default_applied next end super(value, collector) end end
Private Instance Methods
apply_default!(data, collector)
click to toggle source
# File lib/schemacop/v2/field_node.rb, line 34 def apply_default!(data, collector) return data, false unless data.nil? @types.each do |type| next unless type.option?(:default) default = type.option(:default) default = default.call if default.is_a?(Proc) collector.override_value(default) return default, true end return nil, false end