Sha256: b24411f111570ad0b7a182986f12b5692bcfb0df5176cc65bb9777ce74a30a27

Contents?: true

Size: 696 Bytes

Versions: 15

Compression:

Stored size: 696 Bytes

Contents

module Dry
  module Validation
    class MessageCompiler
      class VisitorOpts < Hash
        def self.new
          opts = super
          opts[:path] = EMPTY_ARRAY
          opts[:rule] = nil
          opts[:message_type] = :failure
          opts
        end

        def path?
          ! path.empty?
        end

        def path
          self[:path]
        end

        def rule
          self[:rule]
        end

        def with_rule(new_rule, **other)
          opts = dup
          opts[:rule] = new_rule unless opts.rule
          opts.(other)
        end

        def call(other)
          merge(other.update(path: [*path, *other[:path]]))
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
dry-validation-0.13.3 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.13.2 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.13.1 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.11.2 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.12.3 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.13.0 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.12.2 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.12.1 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.12.0 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.11.1 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.11.0 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.10.7 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.10.6 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.10.5 lib/dry/validation/message_compiler/visitor_opts.rb
dry-validation-0.10.4 lib/dry/validation/message_compiler/visitor_opts.rb