> On Nov 19, 2017, at 10:49 PM, [email protected] wrote:
>
> I need to export in "confluence storage format" -
> https://confluence.atlassian.com/doc/confluence-storage-format-790796544.html#ConfluenceStorageFormat-Links
>
> <https://confluence.atlassian.com/doc/confluence-storage-format-790796544.html#ConfluenceStorageFormat-Links>
>
I just pushed an update that will handle "<![CDATA[···]]" strings correctly.
Input (putting all the parts together in one file for demonstration purposes):
;;;
#lang pollen/pre
◊(require pollen/template/html)
◊(define (as-cdata string)
(string-append "<![CDATA[" string "]]>"))
◊(->html
◊ac:link{
◊ri:attachment[#:ri:filename "atlassian_logo.gif"]{
◊ac:plain-text-link-body{◊as-cdata{Link to a Confluence Attachment}}}})
;;;
Result:
<ac:link><ri:attachment
ri:filename="atlassian_logo.gif"><ac:plain-text-link-body><![CDATA[Link to a
Confluence Attachment]]></ac:plain-text-link-body></ri:attachment></ac:link>
* * *
Supernerds might point out that this fix is a bit of a cheat: The official
grammar for X-expressions includes the `cdata` structure type. [1] But Pollen
still does not support this `cdata` structure directly.
The problem is that the `cdata` is an outlier in the grammar: it's the only
element that can't be serialized (meaning, written to a string in a way that
allows it to be reconstituted later). Pollen relies heavily on disk caching. So
the problem is that these `cdata` objects can't be cached to disk. CDATA
strings, however, can be.
I'm not sure what the deeper fix would be — probably to update Racket's `xml`
module so that its structures, including `cdata`, are serializable.
[1]
https://docs.racket-lang.org/xml/index.html?q=xexpr%3F#%28def._%28%28lib._xml%2Fprivate%2Fxexpr-core..rkt%29._xexpr~3f%29%29
<https://docs.racket-lang.org/xml/index.html?q=xexpr?#(def._((lib._xml/private/xexpr-core..rkt)._xexpr~3f))>
--
You received this message because you are subscribed to the Google Groups
"Pollen" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.