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
`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

View file

@ -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))