Sha256: 05e11a096d84005fc2506594041fdfea7d8f4c2f0c748bf849e6729b0ceb7267
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
require 'dry/schema/constants' require 'dry/schema/message' module Dry module Schema # @api private class MessageCompiler # Optimized option hash used by visitor methods in message compiler # # @api private class VisitorOpts < Hash # @api private def self.new opts = super opts[:path] = EMPTY_ARRAY opts[:rule] = nil opts[:message_type] = :failure opts[:current_messages] = EMPTY_ARRAY.dup opts end # @api private def path self[:path] end # @api private def call(other) merge(other.update(path: [*path, *other[:path]])) end def dup(current_messages = EMPTY_ARRAY.dup) opts = super() opts[:current_messages] = current_messages opts end def key_failure?(path) failures.any? { |f| f.path == path && f.predicate.equal?(:key?) } end def failures current_messages.reject(&:hint?) end def hints current_messages.select(&:hint?) end def current_messages self[:current_messages] end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-schema-0.2.0 | lib/dry/schema/message_compiler/visitor_opts.rb |