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