summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go26
1 files changed, 16 insertions, 10 deletions
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