Class: FlowEngine::Rules::All

Inherits:
Base
  • Object
show all
Defined in:
lib/flowengine/rules/all.rb

Overview

Composite rule: logical AND of multiple sub-rules. All must be true.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*rules) ⇒ All

Returns a new instance of All.

Parameters:

  • rules (Array<Base>) —

    one or more rules (arrays are flattened)



12
13
14
15
16
# File 'lib/flowengine/rules/all.rb', line 12

def initialize(*rules)
  super()
  @rules = rules.flatten.freeze
  freeze
end

Instance Attribute Details

#rules ⇒ Array<Base> (readonly)

sub-rules to evaluate

Returns:

  • (Array<Base>) —

    the current value of rules



8
9
10
# File 'lib/flowengine/rules/all.rb', line 8

def rules
  @rules
end

Instance Method Details

#evaluate(answers) ⇒ Boolean

Returns true if every sub-rule evaluates to true.

Parameters:

  • answers (Hash) —

    current answers

Returns:

  • (Boolean) —

    true if every sub-rule evaluates to true



20
21
22
# File 'lib/flowengine/rules/all.rb', line 20

def evaluate(answers)
  rules.all? { |rule| rule.evaluate(answers) }
end

#to_s ⇒ String

Returns e.g. "(rule1 AND rule2 AND rule3)".

Returns:

  • (String) —

    e.g. "(rule1 AND rule2 AND rule3)"



25
26
27
# File 'lib/flowengine/rules/all.rb', line 25

def to_s
  "(#{rules.join(" AND ")})"
end