Class: FlowEngine::Rules::Any

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

Overview

Composite rule: logical OR of multiple sub-rules. At least one must be true.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*rules) ⇒ Any

Returns a new instance of Any.

Parameters:

  • rules (Array<Base>) —

    one or more rules (arrays are flattened)



12
13
14
15
16
# File 'lib/flowengine/rules/any.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/any.rb', line 8

def rules
  @rules
end

Instance Method Details

#evaluate(answers) ⇒ Boolean

Returns true if any sub-rule evaluates to true.

Parameters:

  • answers (Hash) —

    current answers

Returns:

  • (Boolean) —

    true if any sub-rule evaluates to true



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

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

#to_s ⇒ String

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

Returns:

  • (String) —

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



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

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