1
0
Fork 0

Compare commits

...

4 commits

Author SHA1 Message Date
f880847f15 Merge remote-tracking branch 'sourcehut/customizations' into customizations 2023-09-06 15:25:54 -07:00
a502f2ce9c Merge branch 'svg-support' into customizations 2021-07-02 02:32:22 -07:00
3924728bab 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.
2021-07-02 02:28:27 -07:00
32b9adf4bf Fix tag pages by reverting to the original layout 2021-05-31 20:44:34 -07:00
2 changed files with 21 additions and 9 deletions

View file

@ -81,15 +81,24 @@
(define (wordpress->sxml text) (define (wordpress->sxml text)
(let ((sxml (cadr (with-input-from-string* (string-append "<div>" text "</div>") (let ((sxml (cadr (with-input-from-string* (string-append "<div>" text "</div>")
xml->sxml)))) (lambda () (xml->sxml #:namespaces '((svg . "http://www.w3.org/2000/svg"))))))))
(pre-post-order (pre-post-order
sxml sxml
`((*default* . ,(lambda (tag . body) `((*default* . ,(lambda (tag . body)
(if (can-contain-p? tag) (let ((tag (if (string-prefix? "svg:" (symbol->string tag))
(wpautop tag body) (string->symbol (substring (symbol->string tag) 4))
(cons tag body)))) tag)))
(if (can-contain-p? tag)
(wpautop tag body)
(cons tag body)))))
(*text* . ,(lambda (tag text) (*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 (marxdown->sxml text) (define (marxdown->sxml text)
(smarxdown->shtml (call-with-input-string text marxdown->smarxdown))) (smarxdown->shtml (call-with-input-string text marxdown->smarxdown)))

View file

@ -301,10 +301,13 @@
(post-from-key index key)) (post-from-key index key))
(hash-ref tags tag '())))) (hash-ref tags tag '()))))
(if (pair? posts) (if (pair? posts)
(respond `(,(tag-sidebar tag index) (respond `((h2 "posts tagged \"" ,tag "\" ("
(h2 "posts tagged \"" ,tag "\"") ,(rellink '("feed" "atom") "feed"
,@(map (lambda (post) (show-post post #f)) #:query `(("with" . ,tag)))
(take-max (reverse posts) 10))) ")")
,@(map (lambda (post) `(p ,(post-link post)))
(take-max (reverse posts) 10))
,(related-tag-cloud tag index))
#:etag (assq-ref index 'master) #:etag (assq-ref index 'master)
#:title (string-append "posts tagged \"" tag "\"")) #:title (string-append "posts tagged \"" tag "\""))
(respond `((h2 "Unknown tag " ,tag) (respond `((h2 "Unknown tag " ,tag)