html/transform
src/html/transform.tur
rewrite HTML at the token level as it streams past.
Since: 0.2.0
defn
html-sax-transform-opts
(html-sax-transform-opts [src : cstr opts : HtmlOpts f : (fn [SaxEvent])
transform HTML with explicit caps.
Parameters
| src | the markup | |
| opts | caps (only the byte cap applies to tokenizing) | |
| f | one event in (owned), the events to write out |
Returns
(Result String TransformError) -- the rewritten markup, owned by the caller; InputError only for the byte cap or memory, OutputError when the writer refuses what f returned.
Example
(html-sax-transform-opts src (default-html-opts) sax-keep)
Since: 0.2.0
defn
html-sax-transform
(html-sax-transform [src : cstr f : (fn [SaxEvent])
transform HTML with the default caps.
Parameters
| src | the markup | |
| f | one event in (owned), the events to write out |
Returns
(Result String TransformError)
Example
;; Drop every <script> start and end tag and the text between.
(let [^mut in-script false]
(html-sax-transform src
(fn [ev : SaxEvent] : (Cons SaxEvent)
(match ev
(StartElement n _) (if (string=? n "script")
(do (set! in-script true) (sax-event-release ev) (tnil))
(sax-keep ev))
(EndElement n) (if (string=? n "script")
(do (set! in-script false) (sax-event-release ev) (tnil))
(sax-keep ev))
_ (if in-script
(do (sax-event-release ev) (tnil))
(sax-keep ev))))))
Since: 0.2.0
Internal definitions
__ht-finish-- internal: the tokenizer's outcome, then the writer's.