Sha256: b7ce3dfa6e879ebed38060a237dc38a4ed985a96bdbfca16fddc75be0ab0bcc8

Contents?: true

Size: 1.41 KB

Versions: 10

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require "dry/schema/message/or/abstract"

module Dry
  module Schema
    class Message
      module Or
        # A message type used by OR operations with the same path
        #
        # @api public
        class SinglePath < Abstract
          # @api private
          attr_reader :path

          # @api private
          attr_reader :_path

          # @api private
          attr_reader :messages

          # @api private
          def initialize(*args, messages)
            super(*args)
            @messages = messages
            @path = left.path
            @_path = left._path
          end

          # Dump a message into a string
          #
          # Both sides of the message will be joined using translated
          # value under `dry_schema.or` message key
          #
          # @see Message#dump
          #
          # @return [String]
          #
          # @api public
          def dump
            @dump ||= "#{left.dump} #{messages[:or]} #{right.dump}"
          end
          alias_method :to_s, :dump

          # Dump an `or` message into a hash
          #
          # @see Message#to_h
          #
          # @return [String]
          #
          # @api public
          def to_h
            @to_h ||= _path.to_h(dump)
          end

          # @api private
          def to_a
            @to_a ||= [left, right]
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
dry-schema-1.9.3 lib/dry/schema/message/or/single_path.rb
dry-schema-1.9.2 lib/dry/schema/message/or/single_path.rb
dry-schema-1.9.1 lib/dry/schema/message/or/single_path.rb
dry-schema-1.9.0 lib/dry/schema/message/or/single_path.rb
dry-schema-1.8.0 lib/dry/schema/message/or/single_path.rb
dry-schema-1.7.1 lib/dry/schema/message/or/single_path.rb
dry-schema-1.7.0 lib/dry/schema/message/or/single_path.rb
dry-schema-1.6.2 lib/dry/schema/message/or/single_path.rb
dry-schema-1.6.1 lib/dry/schema/message/or/single_path.rb
dry-schema-1.6.0 lib/dry/schema/message/or/single_path.rb