diff options
| author | Jakob L. Kreuze | 2019-12-28 21:35:20 -0500 |
|---|---|---|
| committer | Jakob L. Kreuze | 2019-12-28 21:35:20 -0500 |
| commit | b6811d23266cf804ea58919ab85e6aec4be7b7e7 (patch) | |
| tree | 1d87252b3ad4b15cf3012604070c3f6d523908f8 /haunt/jakob/builder/blog.scm | |
| parent | 7b2e58eafb5562ca425075e112746b0ab33a0869 (diff) | |
Refactor SXML generation with a reader macro.
Diffstat (limited to 'haunt/jakob/builder/blog.scm')
| -rw-r--r-- | haunt/jakob/builder/blog.scm | 85 |
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 →")))) ;;; |