@@ -2,41 +2,58 @@ package docgen
22
33import (
44 "fmt"
5+ "sort"
56 "strings"
67)
78
89func (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
6481func 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