Sha256: 834dbce9672ac460639b45a5652a790ccaf8b3141942e25884983ba150b69991

Contents?: true

Size: 959 Bytes

Versions: 4

Compression:

Stored size: 959 Bytes

Contents

# frozen_string_literal: true

require 'rast/rules/rule_evaluator'

# undoc
class RuleProcessor
  # /**
  #  * @param scenario current scenario.
  #  * @param caseFixture current test case fixture.
  #  */
  def evaluate(scenario: [], fixture: nil)
    # if scenario.empty? || fixture.nil?
    #   raise 'Scenario or fixture cannot be nil.'
    # end

    fixture[:spec].rule.outcomes.inject([]) do |retval, outcome|
      process_outcome(
        scenario: scenario,
        fixture: fixture,
        list: retval,
        outcome: outcome
      )
    end
  end

  private

  def process_outcome(scenario: [], fixture: nil, list: [], outcome: '')
    spec = fixture[:spec]

    clause = spec.rule.clause(outcome: outcome)
    rule_evaluator = RuleEvaluator.new(converters: spec.converters)

    rule_evaluator.parse(expression: clause)

    list << rule_evaluator.evaluate(
      scenario: scenario,
      rule_token_convert: spec.converters
    )
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rast-0.4.1.pre lib/rast/rules/rule_processor.rb
rast-0.4.0.pre lib/rast/rules/rule_processor.rb
rast-0.3.0.pre lib/rast/rules/rule_processor.rb
rast-0.1.2.pre lib/rast/rules/rule_processor.rb