class Dry::Logic::Operations::Key
def self.evaluator(name)
def self.evaluator(name) Evaluator::Key.new(name) end
def self.new(rules, **options)
def self.new(rules, **options) if options[:evaluator] super else name = options.fetch(:name) eval = options.fetch(:evaluator, evaluator(name)) super(rules, **options, evaluator: eval, path: name) end end
def [](hash)
def [](hash) rule[evaluator[hash]] end
def ast(input = Undefined)
def ast(input = Undefined) if input.equal?(Undefined) || !input.is_a?(Hash) [type, [path, rule.ast]] else [type, [path, rule.ast(evaluator[input])]] end end
def call(hash)
def call(hash) input = evaluator[hash] result = rule.(input) if result.success? Result::SUCCESS else Result.new(false, path) { [type, [path, result.to_ast]] } end end
def initialize(*rules, **options)
def initialize(*rules, **options) super @evaluator = options[:evaluator] @path = options[:path] end
def to_s
def to_s "#{type}[#{path}](#{rule})" end
def type
def type :key end