Module: Dry::Validation::Schema::Definition

Included in:
Dry::Validation::Schema, Value
Defined in:
lib/dry/validation/schema/definition.rb

Instance Method Summary collapse

Instance Method Details

#confirmation(name) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/dry/validation/schema/definition.rb', line 35

def confirmation(name)
  identifier = :"#{name}_confirmation"

  key(name, &:filled?)
  key(identifier, &:filled?)

  rule(identifier, eql?: [name, identifier])
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



16
17
18
# File 'lib/dry/validation/schema/definition.rb', line 16

def optional(name, &block)
  Key.new(name, rules).optional(&block)
end

#rule(name, **options, &block) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/dry/validation/schema/definition.rb', line 20

def rule(name, **options, &block)
  if options.any?
    predicate, rule_names = options.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