Sha256: 0e9916504dbf1a0de4336f96cd76bf8d41b41d19fdaf6d6364e0814fb86b6f0e

Contents?: true

Size: 813 Bytes

Versions: 2

Compression:

Stored size: 813 Bytes

Contents

module Dry
  module Validation
    class Schema
      module Definition
        def key(name, &block)
          Key.new(name, rules).key?(&block)
        end

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

        def rule(name, **options)
          predicate, rules = options.to_a.first
          identifier = { name => rules }

          groups << [:group, [identifier, [:predicate, predicate]]]
        end

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

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

          rule(identifier, eql?: [name, identifier])
        end
      end
    end
  end
end

require 'dry/validation/schema/rule'
require 'dry/validation/schema/value'
require 'dry/validation/schema/key'

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dry-validation-0.3.1 lib/dry/validation/schema/definition.rb
dry-validation-0.3.0 lib/dry/validation/schema/definition.rb