From b3673ecd7865c9144b68e5bfd34318c98e398931 Mon Sep 17 00:00:00 2001 From: t Date: Sun, 12 Jul 2026 17:46:15 -0600 Subject: include the title h1 in `.Sections` --- main.go | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index c7fb8ce..8fabda0 100644 --- a/main.go +++ b/main.go @@ -312,9 +312,7 @@ func extractTitle(doc ast.Node, source []byte) string { if !ok || heading.Level != 1 { continue } - title := strings.TrimSpace(string(heading.Text(source))) - doc.RemoveChild(doc, node) - return title + return strings.TrimSpace(string(heading.Text(source))) } return "" } @@ -427,17 +425,25 @@ func relativePath(from, target string) string { return rel } -func sortPages(pages []*Page, key string) []*Page { +func sortPages(pages []*Page, keys ...string) []*Page { result := slices.Clone(pages) - sort.SliceStable(result, func(i, j int) bool { - if key == "mod_time" { - return result[i].ModTime.After(result[j].ModTime) + date := func(page *Page) time.Time { + for _, key := range keys { + if key == "mod_time" { + return page.ModTime + } + if value, ok := asTime(page.Meta[key]); ok { + return value + } } - if key == "title" { + return time.Time{} + } + sort.SliceStable(result, func(i, j int) bool { + if len(keys) == 1 && keys[0] == "title" { return strings.ToLower(result[i].Title) < strings.ToLower(result[j].Title) } - a, _ := asTime(result[i].Meta[key]) - b, _ := asTime(result[j].Meta[key]) + a := date(result[i]) + b := date(result[j]) return a.After(b) }) return result -- cgit v1.3