Sha256: 81e125a4d1a84947cb56719e686a32c216799b866fff3587b0b5bf5a350d0e2c

Contents?: true

Size: 779 Bytes

Versions: 1

Compression:

Stored size: 779 Bytes

Contents

module Dry
  module Logic
    class Rule::Check < Rule
      attr_reader :keys

      class Unary < Rule::Check
        def evaluate_input(*)
          predicate.input
        end
      end

      class Binary < Rule::Check
        def evaluate_input(result)
          keys.map do |key|
            if key.is_a?(Hash)
              parent, child = key.to_a.flatten
              result[parent].input[child]
            else
              result[key].input
            end
          end
        end
      end

      def initialize(name, predicate, keys)
        super(name, predicate)
        @keys = keys
      end

      def call(result)
        Logic.Result(evaluate_input(result), predicate.(result), self)
      end

      def type
        :check
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dry-logic-0.1.4 lib/dry/logic/rule/check.rb