Sha256: a7ccf76c92dcb094490e27f169fd4c74fbbc6d90a0732dde4b13d411d5e71e53
Contents?: true
Size: 1.08 KB
Versions: 3
Compression:
Stored size: 1.08 KB
Contents
module Schemacop class FieldNode < NodeSupportingType attr_reader :name 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 def validate(data, collector) unless data.key?(name) collector.error "Missing key #{name.inspect}." if @required 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 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
schemacop-2.4.7 | lib/schemacop/field_node.rb |
schemacop-2.4.6 | lib/schemacop/field_node.rb |
schemacop-2.4.5 | lib/schemacop/field_node.rb |