removed global for storing arg-meta. now passed via var

This commit is contained in:
Jude Payne 2023-05-11 21:36:42 +01:00
parent 9989fbd0aa
commit 1b4ffe6a96
2 changed files with 4 additions and 10 deletions

View file

@ -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 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. `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: for the var representing that function. For example:
````clojure ````clojure
{:format :transit+json {:format :transit+json
:namespaces [{:name "pod.babashka.demo" :namespaces [{:name "pod.babashka.demo"
:vars [{"name" "round-trip" "read-meta?" "true"}]}]} :vars [{"name" "round-trip" "arg-meta" "true"}]}]}
```` ````
#### Deferred namespace loading #### Deferred namespace loading

View file

@ -90,8 +90,6 @@
(let [wh (transit/write-handler tag-fn val-fn)] (let [wh (transit/write-handler tag-fn val-fn)]
(swap! transit-default-write-handlers assoc *pod-id* wh))) (swap! transit-default-write-handlers assoc *pod-id* wh)))
(defonce vars-with-metadata (atom {}))
(defn transit-json-write (defn transit-json-write
[pod-id ^String s metadata?] [pod-id ^String s metadata?]
(with-open [baos (java.io.ByteArrayOutputStream. 4096)] (with-open [baos (java.io.ByteArrayOutputStream. 4096)]
@ -109,9 +107,7 @@
write-fn (case format write-fn (case format
:edn pr-str :edn pr-str
:json cheshire/generate-string :json cheshire/generate-string
:transit+json #(transit-json-write :transit+json #(transit-json-write (:pod-id pod) % (:arg-meta opts)))
(:pod-id pod) %
(contains? (get @vars-with-metadata (:pod-id pod)) pod-var)))
id (next-id) id (next-id)
chan (if handlers handlers chan (if handlers handlers
(promise)) (promise))
@ -143,12 +139,10 @@
(with-meta name-sym vmeta) (with-meta name-sym vmeta)
name-sym) name-sym)
metadata? (get-maybe-boolean var "arg-meta")] metadata? (get-maybe-boolean var "arg-meta")]
(when metadata?
(swap! vars-with-metadata update (:pod-id pod) #(conj (set %) sym)))
[name-sym [name-sym
(or code (or code
(fn [& args] (fn [& args]
(let [res (invoke pod sym args {:async async?})] (let [res (invoke pod sym args {:async async? :arg-meta metadata?})]
res)))])) res)))]))
vars)) vars))