Module: Dry::Validation::Schema::Definition
- Included in:
- Dry::Validation::Schema, Value
- Defined in:
- lib/dry/validation/schema/definition.rb
Instance Method Summary collapse
- #attr(name, &block) ⇒ Object
- #confirmation(name, options = {}) ⇒ Object
- #key(name, &block) ⇒ Object
- #optional(name, &block) ⇒ Object
- #rule(name, **options, &block) ⇒ Object
- #schema(name, &block) ⇒ Object
- #value(name) ⇒ Object
Instance Method Details
#attr(name, &block) ⇒ Object
16 17 18 |
# File 'lib/dry/validation/schema/definition.rb', line 16 def attr(name, &block) Attr.new(name, rules).attr?(&block) end |
#confirmation(name, options = {}) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/dry/validation/schema/definition.rb', line 43 def confirmation(name, = {}) conf_name = :"#{name}_confirmation" unless rule_by_name(name) if .any? key(name) do |value| .map { |p, args| value.__send__(:"#{p}?", *args) }.reduce(:&) end else key(name, &:filled?) end end key(conf_name, &:filled?) rule(conf_name, eql?: [name, conf_name]) end |
#key(name, &block) ⇒ Object
12 13 14 |
# File 'lib/dry/validation/schema/definition.rb', line 12 def key(name, &block) Key.new(name, rules).key?(&block) end |
#optional(name, &block) ⇒ Object
20 21 22 |
# File 'lib/dry/validation/schema/definition.rb', line 20 def optional(name, &block) Key.new(name, rules).optional(&block) end |
#rule(name, **options, &block) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/dry/validation/schema/definition.rb', line 28 def rule(name, **, &block) if .any? predicate, rule_names = .to_a.first identifier = { name => rule_names } groups << [:group, [identifier, [:predicate, predicate]]] else if block checks << Schema::Rule.new(name, [:check, [name, yield.to_ary]]) else rule_by_name(name).to_check end end end |
#schema(name, &block) ⇒ Object
5 6 7 8 9 10 |
# File 'lib/dry/validation/schema/definition.rb', line 5 def schema(name, &block) schema = Class.new(superclass) schema.key(name, &block) schemas << schema self end |