Sha256: 3bcfed8d723011cdf3f63e186dced12b6e6f0bc18f3e683810536b4d6c3159fd
Contents?: true
Size: 1.19 KB
Versions: 9
Compression:
Stored size: 1.19 KB
Contents
# frozen_string_literal: true require "dry/schema/constants" 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
9 entries across 9 versions & 1 rubygems