class FsmEngine::Fsm

finite state machine

Attributes

cur_rule[RW]
rules[RW]

Public Class Methods

new(rules) click to toggle source
# File lib/fsm_engine/fsm.rb, line 8
def initialize(rules)
  @rules = {}
  @history = []
  rules.each do |rule|
    self.rules[rule.cur_condition] = rule
  end
  @cur_rule = rules.first
end

Public Instance Methods

start(condition) click to toggle source
# File lib/fsm_engine/fsm.rb, line 17
def start(condition)
  results = []

  while (self.cur_rule = rules[condition])
    result = cur_rule.action.call
    results.push({ condition: condition, result: result })
    condition = cur_rule.next_condition
  end

  results
end