class Raft4r::FSMDrawer

Public Class Methods

new() click to toggle source
# File lib/raft4r/fsm.rb, line 88
def initialize
        @init = nil
        @states = {}
end

Public Instance Methods

dump() click to toggle source
# File lib/raft4r/fsm.rb, line 113
def dump
        ::Kernel::p @states
end
goto(s) click to toggle source
# File lib/raft4r/fsm.rb, line 97
def goto s
        @triggers << s
end
init(s) click to toggle source
# File lib/raft4r/fsm.rb, line 93
def init s
        @init = s
end
method_missing(name, *args, &block) click to toggle source
# File lib/raft4r/fsm.rb, line 130
def method_missing(name, *args, &block)
end
state(s, &block) click to toggle source
# File lib/raft4r/fsm.rb, line 107
def state s, &block
        @curr = {}
        self.instance_eval &block
        @states[s] = @curr
end
to_dot() click to toggle source
# File lib/raft4r/fsm.rb, line 117
def to_dot
        s = []
        s << "digraph graphname{"
        @states.each {|k,v|
                v.each {|tn, ns|
                        s << "\t#{k} -> #{ns.first} [label=\"#{tn}\"]"
                }
        }
        s << "\t__init__ -> #{@init}"
        s << "}"
        s.join("\n")
end
trigger(t, &block) click to toggle source
# File lib/raft4r/fsm.rb, line 101
def trigger t, &block
        @triggers = @curr[t] || []
        self.instance_eval &block
        @curr[t] = @triggers
end