dry-types/lib/dry/types/predicate_registry.rb

35 lines
715 B
Ruby

# frozen_string_literal: true
module Dry
module Types
# A registry with predicate objects from `Dry::Logic::Predicates`
#
# @api private
class PredicateRegistry
# @api private
attr_reader :predicates
# @api private
attr_reader :has_predicate
KERNEL_RESPOND_TO = ::Kernel.instance_method(:respond_to?)
private_constant(:KERNEL_RESPOND_TO)
# @api private
def initialize(predicates = Logic::Predicates)
@predicates = predicates
end
# @api private
def key?(name)
KERNEL_RESPOND_TO.bind_call(@predicates, name)
end
# @api private
def [](name)
predicates[name]
end
end
end
end