removed global for storing arg-meta. now passed via var
This commit is contained in:
parent
9989fbd0aa
commit
1b4ffe6a96
2 changed files with 4 additions and 10 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue