Sha256: ce126cc5bd08fc22a12ae3b5c425ffb6a3defe46e7eea091e3a41f57acc01a67

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

require "pathname"

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

    LIST_SEPARATOR = ", "
    QUESTION_MARK = "?"
    DOT = "."

    # core processor steps in the default execution order
    STEPS_IN_ORDER = %i[
      key_validator
      key_coercer
      filter_schema
      value_coercer
      rule_applier
    ].freeze

    # 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

1 entries across 1 versions & 1 rubygems

Version Path
dry-schema-1.10.3 lib/dry/schema/constants.rb