Sha256: 00074437922945120eff872597917dc3101f03d57ba484666d8ba6396c952367

Contents?: true

Size: 1.07 KB

Versions: 4

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

require 'pathname'
require 'dry/core/constants'

module Dry
  # Common constants used across the library
  #
  # @api public
  module Schema
    include Core::Constants

    LIST_SEPARATOR = ', '
    QUESTION_MARK = '?'
    DOT = '.'

    # Path to the default set of localized messages bundled within the gem
    DEFAULT_MESSAGES_PATH = Pathname(__dir__).join('../../../config/errors.yml').realpath.freeze

    # Default namespace used for localized messages in YAML files
    DEFAULT_MESSAGES_ROOT = 'dry_schema'

    # An error raised when DSL is used in an incorrect way
    InvalidSchemaError = Class.new(StandardError)

    # An error raised when a localized message cannot be found
    MissingMessageError = Class.new(StandardError) do
      # @api private
      def initialize(path, paths = [])
        *rest, rule = path
        super(<<~STR)
          Message template for #{rule.inspect} under #{rest.join(DOT).inspect} was not found. Searched in:
          #{paths.map { |string| "\"#{string}\"" }.join("\n")}
        STR
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-schema-1.4.3 lib/dry/schema/constants.rb
dry-schema-1.4.2 lib/dry/schema/constants.rb
dry-schema-1.4.1 lib/dry/schema/constants.rb
dry-schema-1.4.0 lib/dry/schema/constants.rb