From 32b9adf4bf93a2ff2987f8940cf12679d26e9fc5 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Mon, 31 May 2021 20:44:34 -0700 Subject: [PATCH 1/2] Fix tag pages by reverting to the original layout --- tekuti/page.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tekuti/page.scm b/tekuti/page.scm index 3fcd26b..917f316 100644 --- a/tekuti/page.scm +++ b/tekuti/page.scm @@ -301,10 +301,13 @@ (post-from-key index key)) (hash-ref tags tag '())))) (if (pair? posts) - (respond `(,(tag-sidebar tag index) - (h2 "posts tagged \"" ,tag "\"") - ,@(map (lambda (post) (show-post post #f)) - (take-max (reverse posts) 10))) + (respond `((h2 "posts tagged \"" ,tag "\" (" + ,(rellink '("feed" "atom") "feed" + #:query `(("with" . ,tag))) + ")") + ,@(map (lambda (post) `(p ,(post-link post))) + (take-max (reverse posts) 10)) + ,(related-tag-cloud tag index)) #:etag (assq-ref index 'master) #:title (string-append "posts tagged \"" tag "\"")) (respond `((h2 "Unknown tag " ,tag) From 3924728babeaa809f263e127381d44f7ee0dd140 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Fri, 2 Jul 2021 02:28:27 -0700 Subject: [PATCH 2/2] Add trickery to support embedded SVG images - Specify the svg and xlink namespaces to the `xml->sxml' procedure so that it doesn't include them in full for each tag. - For the default `pre-post-order' handler strip the `svg:' prefix if found. - Strip the `svg:' namespace from the SVG element and insert the `xmlns' and `xmlns:xlink' namespace definition attributes into the attributes. This is all very brittle and badly done, but for the moment this fixes my use-case of wanting to display SVG images embedded in the HTML. --- tekuti/filters.scm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tekuti/filters.scm b/tekuti/filters.scm index be37d0c..5c64f39 100644 --- a/tekuti/filters.scm +++ b/tekuti/filters.scm @@ -80,15 +80,24 @@ (define (wordpress->sxml text) (let ((sxml (cadr (with-input-from-string* (string-append "
" text "
") - xml->sxml)))) + (lambda () (xml->sxml #:namespaces '((svg . "http://www.w3.org/2000/svg")))))))) (pre-post-order sxml `((*default* . ,(lambda (tag . body) - (if (can-contain-p? tag) - (wpautop tag body) - (cons tag body)))) + (let ((tag (if (string-prefix? "svg:" (symbol->string tag)) + (string->symbol (substring (symbol->string tag) 4)) + tag))) + (if (can-contain-p? tag) + (wpautop tag body) + (cons tag body))))) (*text* . ,(lambda (tag text) - text)))))) + text)) + (svg:svg . ,(lambda (tag . body) + (cons 'svg + (cons `(@ (xmlns "http://www.w3.org/2000/svg") + (xmlns:xlink "http://www.w3.org/1999/xlink") + ,@(cdar body)) + (cdr body))))))))) (define *allowed-tags* `((a (href . ,urlish?) title)