Sha256: f19a6f2be67ccd1ffdb03a28bbc25414ca546c45355e83023fd9be9ee8b05494

Contents?: true

Size: 675 Bytes

Versions: 6

Compression:

Stored size: 675 Bytes

Contents

module Rules
  module Evaluators
    class Evaluator
      attr_accessor :evaluation_method, :requires_rhs, :type_for_rhs, :name

      def initialize(key)
        @name = key.to_s
        @requires_rhs = true
      end

      def evaluate(lhs, rhs = nil)
        raise 'Unknown evaluation method' unless evaluation_method

        begin
          requires_rhs? ? evaluation_method.call(lhs, rhs) : evaluation_method.call(lhs)
        rescue StandardError => ex
          return false if Rules.config.errors_are_false?
          raise ex
        end
      end

      def requires_rhs?
        @requires_rhs
      end

      def to_s
        @name
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rules-1.1.1 lib/rules/evaluators/evaluator.rb
rules-1.1.0 lib/rules/evaluators/evaluator.rb
rules-1.0.0 lib/rules/evaluators/evaluator.rb
rules-0.1.2 lib/rules/evaluators/evaluator.rb
rules-0.1.1 lib/rules/evaluators/evaluator.rb
rules-0.1.0 lib/rules/evaluators/evaluator.rb