From 81c47da91c90fd8bac96c6088112f71a11964131 Mon Sep 17 00:00:00 2001 From: sterni Date: Tue, 1 Feb 2022 16:33:54 +0100 Subject: 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 --- users/sterni/mblog/note.lisp | 12 ++++++++---- users/sterni/mblog/packages.lisp | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'users/sterni/mblog') diff --git a/users/sterni/mblog/note.lisp b/users/sterni/mblog/note.lisp index b1f903c9a7..f953d6b1e6 100644 --- a/users/sterni/mblog/note.lisp +++ b/users/sterni/mblog/note.lisp @@ -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' tags and properly diff --git a/users/sterni/mblog/packages.lisp b/users/sterni/mblog/packages.lisp index 651dc6f261..94fce16d40 100644 --- a/users/sterni/mblog/packages.lisp +++ b/users/sterni/mblog/packages.lisp @@ -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 -- cgit 1.4.1