cripslock

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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:
Mmain.fnl | 6+++---
Msite.fnl | 28++++++++++++++++++----------
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]