refactor(sterni/mblog/note): don't escape streams char by char

Depending on the stream backing this, read-sequence should be more
efficient.

Change-Id: I5d0461f76f4b132ac6e6c3a2e503f0173d5f4114
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5194
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
sterni 2022-02-01 16:33:54 +01:00
parent 98e4cd032f
commit 81c47da91c
2 changed files with 9 additions and 5 deletions

View file

@ -3,12 +3,16 @@
;;; util
;; TODO(sterni): merge this with mblog::*copy-buffer-size*
(defvar *copy-buffer-size* 4096)
(defun html-escape-stream (in out)
"Escape characters read from stream IN and write them to
stream OUT escaped using WHO:ESCAPE-CHAR-MINIMAL."
(loop for char = (read-char in nil nil)
while char
do (write-string (who:escape-char-minimal char) out)))
stream OUT escaped using WHO:ESCAPE-STRING-MINIMAL."
(let ((buf (make-string *copy-buffer-size*)))
(loop for len = (read-sequence buf in)
while (> len 0)
do (write-string (who:escape-string-minimal (subseq buf 0 len)) out))))
(defun cid-header-value (cid)
"Takes a Content-ID as present in Apple Notes' <object> tags and properly

View file

@ -19,7 +19,7 @@
:when-let
:starts-with-subseq
:ends-with-subseq)
(:import-from :who :escape-char-minimal)
(:import-from :who :escape-string-minimal)
(:export
:apple-note
:apple-note-uuid