aboutsummaryrefslogtreecommitdiff
path: root/haunt/jakob/builder/blog.scm
diff options
context:
space:
mode:
authorJakob L. Kreuze2019-12-28 21:35:20 -0500
committerJakob L. Kreuze2019-12-28 21:35:20 -0500
commitb6811d23266cf804ea58919ab85e6aec4be7b7e7 (patch)
tree1d87252b3ad4b15cf3012604070c3f6d523908f8 /haunt/jakob/builder/blog.scm
parent7b2e58eafb5562ca425075e112746b0ab33a0869 (diff)
Refactor SXML generation with a reader macro.
Diffstat (limited to 'haunt/jakob/builder/blog.scm')
-rw-r--r--haunt/jakob/builder/blog.scm85
1 files changed, 41 insertions, 44 deletions
diff --git a/haunt/jakob/builder/blog.scm b/haunt/jakob/builder/blog.scm
index 0eda775..5c83bd3 100644
--- a/haunt/jakob/builder/blog.scm
+++ b/haunt/jakob/builder/blog.scm
@@ -47,58 +47,55 @@
(define (render-article post)
"Return the SHTML for POST's contents."
- `(main
- ,@(maybe-list
- `(h1 ,(post-ref post 'title))
- `(p ,(date->string (post-date post) "~B ~d, ~Y")
- " ❖ "
- "Tags: "
- ,@(intersperse
- (map (lambda (tag)
- (hyperlink (tag-uri %tag-prefix tag) tag))
- (post-ref post 'tags))
- ", "))
- (when (post-ref post 'crosspost)
- `(p (strong "This is a summary ")
- "of a post that was published elsewhere. "
- "To read the full post, visit "
- ,(hyperlink (post-ref post 'crosspost) "this link")
- "."))
- `(article
- ,(post-sxml post))
- `(section
- (@ (id "webmention"))
- (h2 ,(hyperlink "https://indieweb.org/Webmention" "Webmentions")
- " for this Page")
- (ul (@ (id "webmention-container")))
- (form
- (@ (action "https://webmention.io/jakob.space/webmention")
- (method "post"))
- (label "Have you written a "
- ,(hyperlink "https://indieweb.org/responses" "response")
- " to this? Let me know the URL:")
- (input (@ (name "source") (type "url")))
- (input (@ (value "Send Webmention") (type "submit"))))
- ,(script "webmention.js")))))
+ #<(main
+ `(h1 ,(post-ref post 'title))
+ (p ,(date->string (post-date post) "~B ~d, ~Y")
+ " ❖ "
+ "Tags: "
+ ,@(intersperse
+ (map (lambda (tag)
+ (hyperlink (tag-uri %tag-prefix tag) tag))
+ (post-ref post 'tags))
+ ", "))
+ ,(when (post-ref post 'crosspost)
+ `(p (strong "This is a summary ")
+ "of a post that was published elsewhere. "
+ "To read the full post, visit "
+ ,(hyperlink (post-ref post 'crosspost) "this link")
+ "."))
+ (article ,(post-sxml post))
+ (section
+ (@ (id "webmention"))
+ (h2 ,(hyperlink "https://indieweb.org/Webmention" "Webmentions")
+ " for this Page")
+ (ul (@ (id "webmention-container")))
+ (form
+ (@ (action "https://webmention.io/jakob.space/webmention")
+ (method "post"))
+ (label "Have you written a "
+ ,(hyperlink "https://indieweb.org/responses" "response")
+ " to this? Let me know the URL:")
+ (input (@ (name "source") (type "url")))
+ (input (@ (value "Send Webmention") (type "submit"))))
+ ,(script "webmention.js"))))
(define (render-preview post)
"Return the SHTML for a preview of POST."
(let ((crosspost-uri (post-ref post 'crosspost))
(local-uri (post-uri post)))
- `(section
- (h2 ,(hyperlink (or crosspost-uri local-uri) (post-ref post 'title)))
- (p ,@(maybe-cons*
- (date->string (post-date post) "~B ~d, ~Y")
- (when crosspost-uri
- (list " ↻ " (hyperlink local-uri "Crosspost")))
- " ❖ Tags: "
- (intersperse
+ #<(section
+ (h2 ,(hyperlink (or crosspost-uri local-uri) (post-ref post 'title)))
+ (p ,(date->string (post-date post) "~B ~d, ~Y")
+ ,(when crosspost-uri
+ (list " ↻ " (hyperlink local-uri "Crosspost")))
+ " ❖ Tags: "
+ ,@(intersperse
(map (lambda (tag)
(hyperlink (tag-uri %tag-prefix tag) tag))
(post-ref post 'tags))
- ", ")))
- (p ,(first-paragraph post))
- ,(hyperlink (or crosspost-uri local-uri) "read more →"))))
+ ", "))
+ (p ,(first-paragraph post))
+ ,(hyperlink (or crosspost-uri local-uri) "read more →"))))
;;;

© 2015 - 2026 Jakob L. Kreuze