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