module Dryv
Constants
- VERSION
Public Instance Methods
find_schemas_for_attribute(key, schema, schemas = [])
click to toggle source
# File lib/dryv/schema.rb, line 127 def find_schemas_for_attribute(key, schema, schemas = []) case schema when Hash s = schema[:properties][key] rescue nil schemas << s if s [:allOf, :anyOf, :oneOf].each { |k| find_schemas_for_attribute(key, schema[k], schemas) } when Array schema.each { |s| find_schemas_for_attribute(key, s, schemas) } else end schemas end
method_missing(method)
click to toggle source
# File lib/dryv/schema.rb, line 143 def method_missing(method) attributes[method.to_sym] end
multi_rule(keys, parents, messages = {}, name = nil, &block)
click to toggle source
# File lib/dryv/schema.rb, line 109 def multi_rule(keys, parents, messages = {}, name = nil, &block) _keys = [keys].flatten.compact data = parents.present? ? attributes.dig(*parents) : attributes data = _keys.inject({}) do |res, key| res[key.to_sym] = data[key.to_sym] rescue nil; res end factories = data.map do |key, value| _key = name || key _key = (parents + [_key]).join('.') Dryv::RulesFactory.new(value, errors, key: _key, messages: messages) end block.call *factories end
rule(attrs, parents, messages = {}, name = nil, &block)
click to toggle source
# File lib/dryv/schema.rb, line 91 def rule(attrs, parents, messages = {}, name = nil, &block) if block.arity == 0 _attrs = [attrs].flatten.compact raise 'Invalid rule' if _attrs.size > 1 single_rule(parents + _attrs, messages, &block) else multi_rule(attrs, parents, messages, name, &block) end end
single_rule(keys, messages = {}, &block)
click to toggle source
# File lib/dryv/schema.rb, line 102 def single_rule(keys, messages = {}, &block) value = attributes.dig(*keys) rescue nil factory = Dryv::RulesFactory.new(value, errors, key: keys.join('.'), messages: messages) factory.instance_exec &block end