@@ -2,41 +2,58 @@ package docgen
2
2
3
3
import (
4
4
"fmt"
5
+ "sort"
5
6
"strings"
6
7
)
7
8
8
9
func (c * Context ) Markdown () string {
10
+ var variables []string
11
+ for name := range c .Variables {
12
+ variables = append (variables , string (name ))
13
+ }
14
+
15
+ var types []string
16
+ for name := range c .Types {
17
+ types = append (types , string (name ))
18
+ }
19
+
20
+ sort .Strings (variables )
21
+ sort .Strings (types )
22
+
9
23
out := `### Variables
10
24
| Name | Type |
11
25
|------|------|
12
26
`
13
- for ident , v := range c .Variables {
27
+ for _ , name := range variables {
28
+ v := c .Variables [Identifier (name )]
14
29
if v .Kind == "func" {
15
30
continue
16
31
}
17
32
if v .Kind == "operator" {
18
33
continue
19
34
}
20
- out += fmt .Sprintf ("| %v | %v |\n " , ident , link (v ))
35
+ out += fmt .Sprintf ("| %v | %v |\n " , name , link (v ))
21
36
}
22
37
23
38
out += `
24
39
### Functions
25
40
| Name | Return type |
26
41
|------|-------------|
27
42
`
28
- for ident , v := range c .Variables {
43
+ for _ , name := range variables {
44
+ v := c .Variables [Identifier (name )]
29
45
if v .Kind == "func" {
30
46
args := make ([]string , len (v .Arguments ))
31
47
for i , arg := range v .Arguments {
32
48
args [i ] = link (arg )
33
49
}
34
- out += fmt .Sprintf ("| %v(%v) | %v |\n " , ident , strings .Join (args , ", " ), link (v .Return ))
50
+ out += fmt .Sprintf ("| %v(%v) | %v |\n " , name , strings .Join (args , ", " ), link (v .Return ))
35
51
}
36
52
}
37
53
38
54
out += "\n ### Types\n "
39
- for name , t := range c .Types {
55
+ for _ , name := range types {
56
+ t := c .Types [TypeName (name )]
40
57
out += fmt .Sprintf ("#### %v\n " , name )
41
58
out += fields (t )
42
59
out += "\n "
@@ -62,20 +79,28 @@ func link(t *Type) string {
62
79
}
63
80
64
81
func fields (t * Type ) string {
82
+ var fields []string
83
+ for field := range t .Fields {
84
+ fields = append (fields , string (field ))
85
+ }
86
+ sort .Strings (fields )
87
+
65
88
out := ""
66
89
foundFields := false
67
- for ident , v := range t .Fields {
90
+ for _ , name := range fields {
91
+ v := t .Fields [Identifier (name )]
68
92
if v .Kind != "func" {
69
93
if ! foundFields {
70
94
out += "| Field | Type |\n |---|---|\n "
71
95
}
72
96
foundFields = true
73
97
74
- out += fmt .Sprintf ("| %v | %v |\n " , ident , link (v ))
98
+ out += fmt .Sprintf ("| %v | %v |\n " , name , link (v ))
75
99
}
76
100
}
77
101
foundMethod := false
78
- for ident , v := range t .Fields {
102
+ for _ , name := range fields {
103
+ v := t .Fields [Identifier (name )]
79
104
if v .Kind == "func" {
80
105
if ! foundMethod {
81
106
out += "\n | Method | Returns |\n |---|---|\n "
@@ -86,7 +111,7 @@ func fields(t *Type) string {
86
111
for i , arg := range v .Arguments {
87
112
args [i ] = link (arg )
88
113
}
89
- out += fmt .Sprintf ("| %v(%v) | %v |\n " , ident , strings .Join (args , ", " ), link (v .Return ))
114
+ out += fmt .Sprintf ("| %v(%v) | %v |\n " , name , strings .Join (args , ", " ), link (v .Return ))
90
115
}
91
116
}
92
117
return out
0 commit comments