Sha256: e0f3efcbac96ed4794aadb1b731b26c4a3986a1410db149b85daa1f025c423d7
Contents?: true
Size: 1.15 KB
Versions: 3
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true require 'dry/logic/operations/unary' require 'dry/logic/evaluator' require 'dry/logic/result' module Dry module Logic module Operations class Check < Unary attr_reader :evaluator def self.new(rule, **options) if options[:evaluator] super(rule, options) else keys = options.fetch(:keys) evaluator = Evaluator::Set.new(keys) super(rule, **options, evaluator: evaluator) end end def initialize(*rules, **options) super @evaluator = options[:evaluator] end def type :check end def call(input) *head, tail = evaluator[input] result = rule.curry(*head).(tail) if result.success? Result::SUCCESS else Result.new(false, id) { [type, [options[:keys], result.to_ast]] } end end def [](input) rule[*evaluator[input].reverse] end def ast(input = Undefined) [type, [options[:keys], rule.ast(input)]] end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-logic-1.0.6 | lib/dry/logic/operations/check.rb |
dry-logic-1.0.5 | lib/dry/logic/operations/check.rb |
dry-logic-1.0.4 | lib/dry/logic/operations/check.rb |