From a1378a5200c9fa247bedee2a54b4d0f0c1bcf5c8 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Wed, 18 Sep 2024 16:22:12 +0200 Subject: [PATCH] [v4] Add config for raw verbatim strings --- src/taoensso/carmine_v4.clj | 11 ++++------- src/taoensso/carmine_v4/resp/read.clj | 12 ++++++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/taoensso/carmine_v4.clj b/src/taoensso/carmine_v4.clj index 1004685..474fa2f 100644 --- a/src/taoensso/carmine_v4.clj +++ b/src/taoensso/carmine_v4.clj @@ -185,13 +185,10 @@ (enc/get-env {:as :bool, :default true} :taoensso.carmine.auto-thaw)) -(def ^:dynamic *keywordize-maps?* - "TODO Docstring incl. env config." - true) - -(def ^:dynamic *freeze-opts* - "TODO Docstring incl. env config?" - nil) +;; TODO Docstrings incl. env config. +(def ^:dynamic *raw-verbatim-strings?* false) +(def ^:dynamic *keywordize-maps?* true) +(def ^:dynamic *freeze-opts* nil) (def ^:dynamic *issue-83-workaround?* "TODO Docstring incl. env config. diff --git a/src/taoensso/carmine_v4/resp/read.clj b/src/taoensso/carmine_v4/resp/read.clj index 73a0fe6..1defb86 100644 --- a/src/taoensso/carmine_v4/resp/read.clj +++ b/src/taoensso/carmine_v4/resp/read.clj @@ -13,7 +13,8 @@ (enc/declare-remote ^:dynamic taoensso.carmine-v4/*keywordize-maps?* ^:dynamic taoensso.carmine-v4/*push-fn* - ^:dynamic taoensso.carmine-v4/*issue-83-workaround?*) + ^:dynamic taoensso.carmine-v4/*issue-83-workaround?* + ^:dynamic taoensso.carmine-v4/*raw-verbatim-strings?*) (alias 'core 'taoensso.carmine-v4) @@ -338,6 +339,8 @@ (declare complete-reply) +(defrecord VerbatimString [format content]) + (let [sentinel-end-of-aggregate-stream com/sentinel-end-of-aggregate-stream sentinel-null-reply com/sentinel-null-reply] @@ -401,9 +404,10 @@ ^String s (read-blob nil false in)] (when-not skip? (let [format (subs s 0 3) ; "txt", "mkd", etc. - payload (subs s 4)] - ;; TODO API okay? Dynamic opt to just return payload? - [:carmine/verbatim-string format payload]))) + content (subs s 4)] + (if taoensso.carmine-v4/*raw-verbatim-strings?* + (VerbatimString. format content) + (do content))))) (int \,) ; Double ✓ (let [s (.readLine in)]