Sha256: 21aaf76854d85b15ed26ef9f6e74f6c378c9374e76c2f9ab471469bdfd50e43f

Contents?: true

Size: 1.91 KB

Versions: 7

Compression:

Stored size: 1.91 KB

Contents

# frozen_string_literal: true

require "dry/core/equalizer"
require "dry/configurable"
require "dry/schema/constants"

module Dry
  module Schema
    # Schema definition configuration class
    #
    # @see DSL#configure
    #
    # @api public
    class Config
      include Dry::Configurable
      include Dry::Equalizer(:to_h, inspect: false)

      # @!method predicates
      #
      # Return configured predicate registry
      #
      # @return [Schema::PredicateRegistry]
      #
      # @api public
      setting :predicates, default: Schema::PredicateRegistry.new

      # @!method types
      #
      # Return configured container with extra types
      #
      # @return [Hash]
      #
      # @api public
      setting :types, default: Dry::Types

      # @!method messages
      #
      # Return configuration for message backend
      #
      # @return [Dry::Configurable::Config]
      #
      # @api public
      setting :messages do
        setting :backend, default: :yaml
        setting :namespace
        setting :load_paths, default: Set[DEFAULT_MESSAGES_PATH], constructor: :dup.to_proc
        setting :top_namespace, default: DEFAULT_MESSAGES_ROOT
        setting :default_locale
      end

      # @!method validate_keys
      #
      # On/off switch for key validator
      #
      # @return [Boolean]
      #
      # @api public
      setting :validate_keys, default: false

      # @api private
      def respond_to_missing?(meth, include_private = false)
        super || config.respond_to?(meth, include_private)
      end

      # @api private
      def inspect
        "#<#{self.class} #{to_h.map { |k, v| ["#{k}=", v.inspect] }.map(&:join).join(" ")}>"
      end

      private

      # Forward to the underlying config object
      #
      # @api private
      def method_missing(meth, *args, &block)
        super unless config.respond_to?(meth)
        config.public_send(meth, *args)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dry-schema-1.13.1 lib/dry/schema/config.rb
dry-schema-1.13.0 lib/dry/schema/config.rb
dry-schema-1.12.0 lib/dry/schema/config.rb
dry-schema-1.11.3 lib/dry/schema/config.rb
dry-schema-1.11.2 lib/dry/schema/config.rb
dry-schema-1.11.1 lib/dry/schema/config.rb
dry-schema-1.11.0 lib/dry/schema/config.rb