cripslock

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

commit 079f21d2c1d930bb0db25b061ff916f15777b3d1
parent f8c8bdb0b50a3ddd808a897594c6ebf40a16dcd3
Author: Daniel Barlow <dan@telent.net>
Date:   Sun, 20 Jul 2025 22:21:27 +0100

hook http up to the textile parser

Diffstat:
Mmain.fnl | 37++++++++++++++++++++++++++-----------
1 file changed, 26 insertions(+), 11 deletions(-)

diff --git a/main.fnl b/main.fnl @@ -7,6 +7,7 @@ (local ce (require :cqueues.errno)) (local server (require :server)) +(local textile (require :textile)) (local { : view } (require :fennel)) @@ -178,13 +179,24 @@ ) -(fn dispatch [route] - (case route.command - :show - "hello this is a post page" - :search - "hello this is a search page" - )) +(local post-index (index-posts "data/blogs/telent.blog/posts/")) +; (print (view (icollect [k v (pairs post-index)] k))) + +(fn dispatch [route stream] + (let [s { :write #(stream:write_chunk $2) } ] + (case route.command + :show + (let [path (. (. post-index route.slug) :full-path)] + (print :path path) + (with-open [f (io.open path )] + (when f + (let [_ (frontmatter f)] + (each [_ el (ipairs (textile.parse f))] + (print (view el)) + (textile.to-html s el))))) + (stream:write_chunk "" true)) + :search + (stream:write_chunk "hello this is a search page" true)))) (fn response-for-route [headers method stream route] (headers:upsert ":status" :200) @@ -192,7 +204,7 @@ (assert (stream:write_headers headers (= method :HEAD))) (when (not= method :HEAD) (stream:write_body_from_string - (dispatch route)))) + (dispatch route stream)))) (fn http-handler [_ stream] (let [req-headers (assert (stream:get_headers)) @@ -207,10 +219,13 @@ (res-headers:upsert ":status" :404) (assert (stream:write_headers res-headers true)))))) - (fn run [] - (let [index (index-posts "data/blogs/telent.blog/posts/") - myserver (server.new { :onstream http-handler } )] + (let [myserver (server.new { :onstream http-handler } )] (myserver:loop))) +;; (with-open [f (io.open "data/blogs/telent.blog/posts//20180410_The_GLInet_has_landed.textile")] +;; (each [_ el (ipairs (textile.parse f))] +;; (textile.to-html io.stdout el))) + + {: run }