Sha256: 2a70aa68d7daf2a852d6936f41f142a36e35beb743cef3cad530d19984832d5b
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
require 'jschematic/composite' module Jschematic module Attributes class Properties include Jschematic::Composite def initialize(properties) properties.each_pair do |name, raw_schema| schema = Schema.with_name(raw_schema, name) add_child(schema) end end def accepts?(instance) children.all? do |child| match = find_instance_for(instance, child.name) if match value = match.last else value = nil end if value.nil? and child.default value = child.default end if value.nil? and child.required? fail_validation!("#{child.name} is required", nil) elsif !value true else child.accepts?(value) || fail_validation!(child.name, value) end end end def id @parent.id end private def find_instance_for(instance, wanted_name) instance.find do |property_name, _| property_name == wanted_name end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jschematic-0.1.0 | lib/jschematic/attributes/properties.rb |