class Fire::Rule

Rule class encapsulates a rule definition.

Attributes

logic[R]

Access logic condition.

Returns [Logic]

procedure[R]

Returns [Proc]

Public Class Methods

new(logic, options={}, &procedure) click to toggle source

Initialize new instanance of Rule.

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

Options

:todo   - Names of prerequisite tasks. [Array<Symbol>]
# File lib/fire/rule.rb, line 14
def initialize(logic, options={}, &procedure)
  @logic     = logic
  @requisite = options[:todo]
  @procedure = procedure
end

Public Instance Methods

apply(&prepare) click to toggle source

Apply logic, running the rule’s prcedure if the logic condition is satisfied.

Returns nothing.

# File lib/fire/rule.rb, line 45
def apply(&prepare)
  case logic
  when true
    call
  when false, nil
  else
    result_set = logic.call
    if result_set && !result_set.empty?
      prepare.call
      call(*result_set)
    end
  end
end
Also aliased as: invoke
invoke(&prepare)

Alias for apply.

Alias for: apply
name() click to toggle source

Rules don’t generally have names, but task rules do.

# File lib/fire/rule.rb, line 37
def name
  nil
end
requisite() click to toggle source

Names of requisite tasks.

# File lib/fire/rule.rb, line 29
def requisite
  @requisite
end
Also aliased as: todo
todo()

More convenient alias for ‘#requisite`.

Alias for: requisite

Protected Instance Methods

call(*result_set) click to toggle source

Run rule procedure.

result_set - The result set returned by the logic condition.

Returns whatever the procedure returns. [Object]

# File lib/fire/rule.rb, line 69
def call(*result_set)
  if @procedure.arity == 0
    @procedure.call
  else
    #@procedure.call(session, *args)
    @procedure.call(*result_set)
  end
end