Sha256: 623db1532d8229d55e30dd3db34eb46a00d60b7269b4ac02be57e71b175d4cbe
Contents?: true
Size: 588 Bytes
Versions: 1
Compression:
Stored size: 588 Bytes
Contents
# frozen_string_literal: true module FsmEngine # finite state machine class Fsm attr_accessor :cur_rule, :rules def initialize(rules) @rules = {} @history = [] rules.each do |rule| self.rules[rule.cur_condition] = rule end @cur_rule = rules.first end 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fsm_engine-0.1.0 | lib/fsm_engine/fsm.rb |