diff options
| -rw-r--r-- | src/fsm.go | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -103,11 +103,12 @@ func (eduvpn *VPNState) GoTransition(newState FSMStateID, data string) bool { return ok } -func (eduvpn *VPNState) GenerateGraph() string { +func (eduvpn *VPNState) generateDotGraph() string { graph := `digraph eduvpn_fsm { nodesep = 2; -rankdir = LR;` - graph += "\nnode[color=blue]; " + eduvpn.FSM.Current.String() + ";\n" +remincross = false; +` + graph += "node[color=blue]; " + eduvpn.FSM.Current.String() + ";\n" graph += "node [color=black];\n" for state, transitions := range eduvpn.FSM.States { for _, transition := range transitions { @@ -118,6 +119,21 @@ rankdir = LR;` return graph } +func (eduvpn *VPNState) generateMermaidGraph() string { + graph := "graph TD\n" + graph += "style " + eduvpn.FSM.Current.String() + " fill:cyan\n" + for state, transitions := range eduvpn.FSM.States { + for _, transition := range transitions { + graph += state.String() + "(" + state.String() + ") " + "-->|" + transition.Description + "| " + transition.To.String() + "\n" + } + } + return graph +} + +func (eduvpn *VPNState) GenerateGraph() string { + return eduvpn.generateMermaidGraph() +} + func (eduvpn *VPNState) InitializeFSM() { eduvpn.FSM = &FSM{ States: FSMStates { |
