Sha256: 25f1eeab54e7733a6da2d1aa8c553f25f276b2f7c639c9486c727194e913bd23

Contents?: true

Size: 1.29 KB

Versions: 18

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

require 'dry/logic/rule_compiler'
require 'dry/schema/namespaced_rule'
require 'dry/schema/predicate_registry'

module Dry
  module Schema
    # Extended rule compiler used internally by the DSL
    #
    # @api private
    class Compiler < Logic::RuleCompiler
      # Builds a default compiler instance with custom predicate registry
      #
      # @return [Compiler]
      #
      # @api private
      def self.new(predicates = PredicateRegistry.new)
        super
      end

      # @api private
      def visit_and(node)
        super.with(hints: false)
      end

      # Build a special rule that will produce namespaced failures
      #
      # This is needed for schemas that are namespaced and they are
      # used as nested schemas
      #
      # @param [Array] node
      # @param [Hash] opts
      #
      # @return [NamespacedRule]
      #
      # @api private
      def visit_namespace(node, opts = EMPTY_HASH)
        namespace, rest = node
        NamespacedRule.new(namespace, visit(rest))
      end

      # Return true if a given predicate is supported by this compiler
      #
      # @param [Symbol] predicate
      #
      # @return [Boolean]
      #
      # @api private
      def supports?(predicate)
        predicates.key?(predicate)
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
dry-schema-1.4.3 lib/dry/schema/compiler.rb
dry-schema-1.4.2 lib/dry/schema/compiler.rb
dry-schema-1.4.1 lib/dry/schema/compiler.rb
dry-schema-1.4.0 lib/dry/schema/compiler.rb
dry-schema-1.3.4 lib/dry/schema/compiler.rb
dry-schema-1.3.3 lib/dry/schema/compiler.rb
dry-schema-1.3.2 lib/dry/schema/compiler.rb
dry-schema-1.3.1 lib/dry/schema/compiler.rb
dry-schema-1.3.0 lib/dry/schema/compiler.rb
dry-schema-1.2.0 lib/dry/schema/compiler.rb
dry-schema-1.1.0 lib/dry/schema/compiler.rb
dry-schema-1.0.3 lib/dry/schema/compiler.rb
dry-schema-1.0.2 lib/dry/schema/compiler.rb
dry-schema-1.0.1 lib/dry/schema/compiler.rb
dry-schema-1.0.0 lib/dry/schema/compiler.rb
dry-schema-0.6.0 lib/dry/schema/compiler.rb
dry-schema-0.5.1 lib/dry/schema/compiler.rb
dry-schema-0.5.0 lib/dry/schema/compiler.rb