Sha256: 78ffb9061c56c934e09ae23b9d06e210d1bff414c482b66a1172db4b97a418dd
Contents?: true
Size: 1.22 KB
Versions: 19
Compression:
Stored size: 1.22 KB
Contents
# frozen_string_literal: true 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[: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
19 entries across 19 versions & 1 rubygems