Class: Rulebow::Rule
- Inherits:
-
Object
- Object
- Rulebow::Rule
- Defined in:
- lib/rulebow/rule.rb
Overview
Rule class encapsulates a rule definition.
Instance Attribute Summary collapse
-
#fact ⇒ Fact
readonly
Access to the rule’s logic condition.
Instance Method Summary collapse
-
#apply(digest) ⇒ void
(also: #invoke)
Apply rule, running the rule’s procedure if the fact is true.
-
#call(*result_set) ⇒ Object
protected
Run rule procedure.
-
#initialize(fact, options = {}, &action) ⇒ Rule
constructor
Initialize new instanance of Rule.
-
#to_proc ⇒ Proc
Access to the rule’s action procedure.
Constructor Details
#initialize(fact, options = {}, &action) ⇒ Rule
Initialize new instanance of Rule.
11 12 13 14 |
# File 'lib/rulebow/rule.rb', line 11 def initialize(fact, ={}, &action) @fact = fact @action = action end |
Instance Attribute Details
#fact ⇒ Fact (readonly)
Access to the rule’s logic condition. [Fact]
17 18 19 |
# File 'lib/rulebow/rule.rb', line 17 def fact @fact end |
Instance Method Details
#apply(digest) ⇒ void Also known as: invoke
This method returns an undefined value.
Apply rule, running the rule’s procedure if the fact is true.
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rulebow/rule.rb', line 29 def apply(digest) case fact when false, nil when true call() else result_set = fact.call(digest) if result_set && !result_set.empty? call(result_set) end end end |
#call(*result_set) ⇒ Object (protected)
Run rule procedure.
52 53 54 55 56 57 58 59 |
# File 'lib/rulebow/rule.rb', line 52 def call(*result_set) if @action.arity == 0 @action.call else #@action.call(session, *result_set) @action.call(*result_set) end end |
#to_proc ⇒ Proc
Access to the rule’s action procedure.
22 23 24 |
# File 'lib/rulebow/rule.rb', line 22 def to_proc @action end |