commit 1be69e6

0uppy  ·  2026-06-01 21:34:05 +0000 UTC
parent 0a7f680
sidebar: simplify the sidebar's ordering
1 files changed,  +23, -18
+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 }