From 1b4ffe6a963f4ff159525627d0f6423098223cbc Mon Sep 17 00:00:00 2001 From: Jude Payne Date: Thu, 11 May 2023 21:36:42 +0100 Subject: [PATCH] removed global for storing arg-meta. now passed via var --- README.md | 4 ++-- src/babashka/pods/impl.clj | 10 ++-------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 00072c6..7d742cc 100644 --- a/README.md +++ b/README.md @@ -414,13 +414,13 @@ to the optional map passed to `transit/writer`. e.g.: Currently sending metadata on arguments passed to a pod function is available only for the `transit+json` format and can be enabled on a per var basis. -A pod can enable metadata to be read on arguments by sending the "read-meta?" field to "true" +A pod can enable metadata to be read on arguments by sending the "arg-meta" field to "true" for the var representing that function. For example: ````clojure {:format :transit+json :namespaces [{:name "pod.babashka.demo" - :vars [{"name" "round-trip" "read-meta?" "true"}]}]} + :vars [{"name" "round-trip" "arg-meta" "true"}]}]} ```` #### Deferred namespace loading diff --git a/src/babashka/pods/impl.clj b/src/babashka/pods/impl.clj index d0beebf..5d54b66 100644 --- a/src/babashka/pods/impl.clj +++ b/src/babashka/pods/impl.clj @@ -90,8 +90,6 @@ (let [wh (transit/write-handler tag-fn val-fn)] (swap! transit-default-write-handlers assoc *pod-id* wh))) -(defonce vars-with-metadata (atom {})) - (defn transit-json-write [pod-id ^String s metadata?] (with-open [baos (java.io.ByteArrayOutputStream. 4096)] @@ -109,9 +107,7 @@ write-fn (case format :edn pr-str :json cheshire/generate-string - :transit+json #(transit-json-write - (:pod-id pod) % - (contains? (get @vars-with-metadata (:pod-id pod)) pod-var))) + :transit+json #(transit-json-write (:pod-id pod) % (:arg-meta opts))) id (next-id) chan (if handlers handlers (promise)) @@ -143,12 +139,10 @@ (with-meta name-sym vmeta) name-sym) metadata? (get-maybe-boolean var "arg-meta")] - (when metadata? - (swap! vars-with-metadata update (:pod-id pod) #(conj (set %) sym))) [name-sym (or code (fn [& args] - (let [res (invoke pod sym args {:async async?})] + (let [res (invoke pod sym args {:async async? :arg-meta metadata?})] res)))])) vars))