Class: Hackle::DelegatingEvaluator

Inherits:
Object
  • Object
show all
Includes:
Evaluator
Defined in:
lib/hackle/internal/evaluation/evaluator/delegating/delegating_evaluator.rb

Instance Method Summary collapse

Methods included from Evaluator

context

Constructor Details

#initializeDelegatingEvaluator

Returns a new instance of DelegatingEvaluator.



9
10
11
12
# File 'lib/hackle/internal/evaluation/evaluator/delegating/delegating_evaluator.rb', line 9

def initialize
  # @type [Array<ContextualEvaluator>]
  @evaluators = []
end

Instance Method Details

#add(evaluator) ⇒ Object

Parameters:



15
16
17
# File 'lib/hackle/internal/evaluation/evaluator/delegating/delegating_evaluator.rb', line 15

def add(evaluator)
  @evaluators << evaluator
end

#evaluate(request, context) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
# File 'lib/hackle/internal/evaluation/evaluator/delegating/delegating_evaluator.rb', line 19

def evaluate(request, context)
  evaluator = @evaluators.find { |it| it.supports?(request) }
  raise ArgumentError, "unsupported EvaluatorRequest [#{request.class}]" if evaluator.nil?

  evaluator.evaluate(request, context)
end