commit 0833024368c41ab2135f4a3082ba069deb327a0c
parent fd37a4aa86a2a768b7501d548c87a6a58481a2cf
Author: Daniel Barlow <dan@telent.net>
Date: Wed, 23 Jul 2025 17:43:24 +0100
return ordered array from search-posts instead of kv table
Diffstat:
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/main.fnl b/main.fnl
@@ -128,7 +128,7 @@
(fn all-months [site]
(let [h
(accumulate [months {}
- (slug post) (pairs (site:search {}))]
+ (_ post) (pairs (site:search {}))]
(let [{ : year : month } (os.date "*t" post.date)]
(tset months year
(doto
@@ -187,7 +187,7 @@ in the Fediverse at <a href=\"https://axillae.telent.net/\">@dan@axillae.telent.
(server.headers stream { })
(page-header stream "Recently")
(stream:write_chunk "<p><ul>")
- (each [slug post (pairs (post-index:search route))]
+ (each [_ post (pairs (post-index:search route))]
(case route.format
:html
(send-post post stream)
@@ -195,7 +195,7 @@ in the Fediverse at <a href=\"https://axillae.telent.net/\">@dan@axillae.telent.
(stream:write_chunk
(string.format
"<li><a href=%q>%s</a></li>"
- slug
+ post.url-path
post.title))))
(stream:write_chunk "</ul>" )
(sidebar post-index stream)
diff --git a/site.fnl b/site.fnl
@@ -124,16 +124,24 @@
(fn search-posts [posts { : filter : order : offset : limit &as opts }]
- (accumulate [out {}
- slug post (pairs posts)]
- (do
- (when
- (case filter
- { : newer : older }
- (and post.date (> post.date newer) (< post.date older))
- _ true)
- (tset out slug post))
- out)))
+ (let [posts
+ (icollect [_ post (pairs posts)]
+ (when
+ (case filter
+ { : newer : older }
+ (and post.date (> post.date newer) (< post.date older))
+ _ true)
+ post))]
+ (if order
+ (let [(field dir) ((pairs order) order)
+ cmp (fn [a b]
+ (let [aa (or (. a field) 0)
+ bb (or (. b field) 0)]
+ (< aa bb)))]
+ (table.sort
+ posts
+ (if (= dir :ascending) cmp #(cmp $2 $1)))))
+ posts))
(fn for-pathname [path]