@@ -14,8 +14,8 @@ func Visualize(fsm *FSM) string {
1414sortedStateKeys ,_ := getSortedStates (fsm .transitions )
1515
1616writeHeaderLine (& buf )
17- writeTransitions (& buf ,fsm . current , sortedEKeys ,fsm .transitions )
18- writeStates (& buf ,sortedStateKeys )
17+ writeTransitions (& buf ,sortedEKeys ,fsm .transitions )
18+ writeStates (& buf ,fsm . current , sortedStateKeys )
1919writeFooter (& buf )
2020
2121return buf .String ()
@@ -26,29 +26,23 @@ func writeHeaderLine(buf *bytes.Buffer) {
2626buf .WriteString ("\n " )
2727}
2828
29- func writeTransitions (buf * bytes.Buffer ,current string ,sortedEKeys []eKey ,transitions map [eKey ]string ) {
30- // make sure the current state is at top
29+ func writeTransitions (buf * bytes.Buffer ,sortedEKeys []eKey ,transitions map [eKey ]string ) {
3130for _ ,k := range sortedEKeys {
32- if k .src == current {
33- v := transitions [k ]
34- buf .WriteString (fmt .Sprintf (` "%s" -> "%s" [ label = "%s" ];` ,k .src ,v ,k .event ))
35- buf .WriteString ("\n " )
36- }
37- }
38- for _ ,k := range sortedEKeys {
39- if k .src != current {
40- v := transitions [k ]
41- buf .WriteString (fmt .Sprintf (` "%s" -> "%s" [ label = "%s" ];` ,k .src ,v ,k .event ))
42- buf .WriteString ("\n " )
43- }
31+ v := transitions [k ]
32+ buf .WriteString (fmt .Sprintf (` "%s" -> "%s" [ label = "%s" ];` ,k .src ,v ,k .event ))
33+ buf .WriteString ("\n " )
4434}
4535
4636buf .WriteString ("\n " )
4737}
4838
49- func writeStates (buf * bytes.Buffer ,sortedStateKeys []string ) {
39+ func writeStates (buf * bytes.Buffer ,current string , sortedStateKeys []string ) {
5040for _ ,k := range sortedStateKeys {
51- buf .WriteString (fmt .Sprintf (` "%s";` ,k ))
41+ if k == current {
42+ buf .WriteString (fmt .Sprintf (` "%s" [color = "red"];` ,k ))
43+ }else {
44+ buf .WriteString (fmt .Sprintf (` "%s";` ,k ))
45+ }
5246buf .WriteString ("\n " )
5347}
5448}