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:
| M | main.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 }