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
|
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
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue