commit 1be69e6
0uppy
·
2026-06-01 21:34:05 +0000 UTC
parent 0a7f680
sidebar: simplify the sidebar's ordering
1 files changed,
+23,
-18
1@@ -2,7 +2,6 @@ package ssg
2
3 import (
4 "os"
5- "sort"
6 "strings"
7 )
8
9@@ -12,32 +11,38 @@ func GetSidebar(pagesDir string, order []string) ([]SidebarItem, error) {
10 return nil, err
11 }
12
13- var nav []SidebarItem
14-
15+ var allPages []string
16 for _, entry := range entries {
17- name := entry.Name()
18- stem, ok := strings.CutSuffix(name, ".md")
19+ stem, ok := strings.CutSuffix(entry.Name(), ".md")
20 if !ok {
21 continue
22 }
23- nav = append(nav, SidebarItem{
24- Name: stem,
25- Path: stem + ".html",
26- })
27+ allPages = append(allPages, stem)
28 }
29
30- sort.Slice(nav, func(i, j int) bool {
31- iIdx, jIdx := len(order), len(order)
32- for k, v := range order {
33- if nav[i].Name == v {
34- iIdx = k
35+ var nav []SidebarItem
36+
37+ for _, name := range order {
38+ for _, page := range allPages {
39+ if page == name {
40+ nav = append(nav, SidebarItem{Name: name, Path: name + ".html"})
41+ break
42 }
43- if nav[j].Name == v {
44- jIdx = k
45+ }
46+ }
47+
48+ for _, page := range allPages {
49+ order := false
50+ for _, name := range order {
51+ if page == name {
52+ order = true
53+ break
54 }
55 }
56- return iIdx < jIdx
57- })
58+ if !order {
59+ nav = append(nav, SidebarItem{Name: page, Path: page + ".html"})
60+ }
61+ }
62
63 return nav, nil
64 }