aboutsummaryrefslogtreecommitdiff
path: root/internal/godoc/dochtml/dochtml.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/godoc/dochtml/dochtml.go')
-rw-r--r--internal/godoc/dochtml/dochtml.go21
1 files changed, 20 insertions, 1 deletions
diff --git a/internal/godoc/dochtml/dochtml.go b/internal/godoc/dochtml/dochtml.go
index 8264170e..8a80973a 100644
--- a/internal/godoc/dochtml/dochtml.go
+++ b/internal/godoc/dochtml/dochtml.go
@@ -19,6 +19,7 @@ import (
"go/doc"
"go/printer"
"go/token"
+ "slices"
"sort"
"strings"
@@ -30,6 +31,7 @@ import (
"golang.org/x/pkgsite/internal/derrors"
"golang.org/x/pkgsite/internal/godoc/dochtml/internal/render"
"golang.org/x/pkgsite/internal/log"
+ "golang.org/x/pkgsite/internal/natural"
"golang.org/x/text/cases"
"golang.org/x/text/language"
)
@@ -151,9 +153,26 @@ func packageToItems(p *doc.Package, exmap map[string][]*example) (consts, vars,
for _, t := range p.Types {
types = append(types, typeToItem(t, exmap))
}
+
+ slices.SortFunc(consts, compareItems)
+ slices.SortFunc(vars, compareItems)
+ slices.SortFunc(funcs, compareItems)
+ slices.SortFunc(types, compareItems)
+
+ for _, typ := range types {
+ slices.SortFunc(typ.Consts, compareItems)
+ slices.SortFunc(typ.Vars, compareItems)
+ slices.SortFunc(typ.Funcs, compareItems)
+ slices.SortFunc(typ.Methods, compareItems)
+ }
+
return consts, vars, funcs, types
}
+func compareItems(a, b *item) int {
+ return natural.Compare(a.Name, b.Name)
+}
+
func valuesToItems(vs []*doc.Value) []*item {
var r []*item
for _, v := range vs {
@@ -402,7 +421,7 @@ func collectExamples(p *doc.Package) *examples {
sort.SliceStable(exs.List, func(i, j int) bool {
// TODO: Break ties by sorting by suffix, unless
// not needed because of upstream slice order.
- return exs.List[i].ParentID < exs.List[j].ParentID
+ return natural.Less(exs.List[i].ParentID, exs.List[j].ParentID)
})
return exs
}