Class: Rulebow::Rule

Inherits:
Object
  • Object
show all
Defined in:
lib/rulebow/rule.rb

Overview

Rule class encapsulates a rule definition.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fact, options = {}, &action) ⇒ Rule

Initialize new instanance of Rule.

Parameters:

  • fact

    Conditional fact. [Fact,Boolean]

  • action

    Procedure to run if logic condition is met. [Proc]



11
12
13
14
# File 'lib/rulebow/rule.rb', line 11

def initialize(fact, options={}, &action)
  @fact   = fact
  @action = action
end

Instance Attribute Details

#factFact (readonly)

Access to the rule’s logic condition. [Fact]

Returns:



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.

Parameters:

  • result_set

    The result set returned by the logic condition.

Returns:

  • (Object)

    Returns whatever the procedure returns.



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_procProc

Access to the rule’s action procedure.

Returns:

  • (Proc)

    Returns



22
23
24
# File 'lib/rulebow/rule.rb', line 22

def to_proc
  @action
end