Skip to content

Commit 637431e

Browse files
committed
Output sorted fields in markdown
1 parent 5ff1280 commit 637431e

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

docgen/markdown.go

+34-9
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,58 @@ package docgen
22

33
import (
44
"fmt"
5+
"sort"
56
"strings"
67
)
78

89
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+
923
out := `### Variables
1024
| Name | Type |
1125
|------|------|
1226
`
13-
for ident, v := range c.Variables {
27+
for _, name := range variables {
28+
v := c.Variables[Identifier(name)]
1429
if v.Kind == "func" {
1530
continue
1631
}
1732
if v.Kind == "operator" {
1833
continue
1934
}
20-
out += fmt.Sprintf("| %v | %v |\n", ident, link(v))
35+
out += fmt.Sprintf("| %v | %v |\n", name, link(v))
2136
}
2237

2338
out += `
2439
### Functions
2540
| Name | Return type |
2641
|------|-------------|
2742
`
28-
for ident, v := range c.Variables {
43+
for _, name := range variables {
44+
v := c.Variables[Identifier(name)]
2945
if v.Kind == "func" {
3046
args := make([]string, len(v.Arguments))
3147
for i, arg := range v.Arguments {
3248
args[i] = link(arg)
3349
}
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))
3551
}
3652
}
3753

3854
out += "\n### Types\n"
39-
for name, t := range c.Types {
55+
for _, name := range types {
56+
t := c.Types[TypeName(name)]
4057
out += fmt.Sprintf("#### %v\n", name)
4158
out += fields(t)
4259
out += "\n"
@@ -62,20 +79,28 @@ func link(t *Type) string {
6279
}
6380

6481
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+
6588
out := ""
6689
foundFields := false
67-
for ident, v := range t.Fields {
90+
for _, name := range fields {
91+
v := t.Fields[Identifier(name)]
6892
if v.Kind != "func" {
6993
if !foundFields {
7094
out += "| Field | Type |\n|---|---|\n"
7195
}
7296
foundFields = true
7397

74-
out += fmt.Sprintf("| %v | %v |\n", ident, link(v))
98+
out += fmt.Sprintf("| %v | %v |\n", name, link(v))
7599
}
76100
}
77101
foundMethod := false
78-
for ident, v := range t.Fields {
102+
for _, name := range fields {
103+
v := t.Fields[Identifier(name)]
79104
if v.Kind == "func" {
80105
if !foundMethod {
81106
out += "\n| Method | Returns |\n|---|---|\n"
@@ -86,7 +111,7 @@ func fields(t *Type) string {
86111
for i, arg := range v.Arguments {
87112
args[i] = link(arg)
88113
}
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))
90115
}
91116
}
92117
return out

0 commit comments

Comments
 (0)