diff --git a/src/babashka/pods.clj b/src/babashka/pods.clj index 6a0614a..554392f 100644 --- a/src/babashka/pods.clj +++ b/src/babashka/pods.clj @@ -15,11 +15,17 @@ ([pod-id-or-pod sym args] (invoke pod-id-or-pod sym args {})) ([pod-id-or-pod sym args opts] (jvm/invoke pod-id-or-pod sym args opts))) -(defn add-transit-read-handler! [tag fn] - (jvm/add-transit-read-handler! tag fn)) +(defmacro copy-var [name var] + `(do (def ~name ~var) + (let [m# (meta (var ~var)) + doc# (:doc m#) + arglists# (:arglists m#)] + (alter-meta! (var ~name) assoc + :arglists arglists# + :doc doc#)))) -(defn add-transit-write-handler! [tag fn classes] - (jvm/add-transit-write-handler! tag fn classes)) - -(defn set-default-transit-write-handler! [tag-fn val-fn] - (jvm/set-default-transit-write-handler! tag-fn val-fn)) +#_:clj-kondo/ignore +(do + (copy-var add-transit-read-handler! jvm/add-transit-read-handler!) + (copy-var add-transit-write-handler! jvm/add-transit-write-handler!) + (copy-var set-default-transit-write-handler! jvm/set-default-transit-write-handler!)) diff --git a/src/babashka/pods/impl.clj b/src/babashka/pods/impl.clj index 7ed8b51..688b9e2 100644 --- a/src/babashka/pods/impl.clj +++ b/src/babashka/pods/impl.clj @@ -69,7 +69,8 @@ (transit/write-handler-map (get @transit-write-handlers *pod-id*)))) ;; https://www.cognitect.com/blog/2015/9/10/extending-transit -(defn add-transit-write-handler! [tag fn classes] +(defn add-transit-write-handler! + [classes tag fn] (let [rh (transit/write-handler tag fn)] (doseq [class classes] (swap! transit-write-handlers assoc-in [*pod-id* class] rh))) diff --git a/src/babashka/pods/jvm.clj b/src/babashka/pods/jvm.clj index 4208e55..b60c36e 100644 --- a/src/babashka/pods/jvm.clj +++ b/src/babashka/pods/jvm.clj @@ -71,11 +71,17 @@ ([pod-id sym args] (invoke pod-id sym args {})) ([pod-id sym args opts] (impl/invoke-public pod-id sym args opts))) -(defn add-transit-read-handler! [tag fn] - (impl/add-transit-read-handler! tag fn)) +(defmacro copy-var [name var] + `(do (def ~name ~var) + (let [m# (meta (var ~var)) + doc# (:doc m#) + arglists# (:arglists m#)] + (alter-meta! (var ~name) assoc + :arglists arglists# + :doc doc#)))) -(defn add-transit-write-handler! [tag fn classes] - (impl/add-transit-write-handler! tag fn classes)) - -(defn set-default-transit-write-handler! [tag-fn val-fn] - (impl/set-default-transit-write-handler! tag-fn val-fn)) +#_:clj-kondo/ignore +(do + (copy-var add-transit-read-handler! impl/add-transit-read-handler!) + (copy-var add-transit-write-handler! impl/add-transit-write-handler!) + (copy-var set-default-transit-write-handler! impl/set-default-transit-write-handler!)) diff --git a/src/babashka/pods/sci.clj b/src/babashka/pods/sci.clj index f08575b..dfb84aa 100644 --- a/src/babashka/pods/sci.clj +++ b/src/babashka/pods/sci.clj @@ -81,11 +81,17 @@ ([pod-id sym args] (invoke pod-id sym args {})) ([pod-id sym args opts] (impl/invoke-public pod-id sym args opts))) -(defn add-transit-read-handler! [tag fn] - (impl/add-transit-read-handler! tag fn)) +(defmacro copy-var [name var] + `(do (def ~name ~var) + (let [m# (meta (var ~var)) + doc# (:doc m#) + arglists# (:arglists m#)] + (alter-meta! (var ~name) assoc + :arglists arglists# + :doc doc#)))) -(defn add-transit-write-handler! [tag fn classes] - (impl/add-transit-write-handler! tag fn classes)) - -(defn set-default-transit-write-handler! [tag-fn val-fn] - (impl/set-default-transit-write-handler! tag-fn val-fn)) +#_:clj-kondo/ignore +(do + (copy-var add-transit-read-handler! impl/add-transit-read-handler!) + (copy-var add-transit-write-handler! impl/add-transit-write-handler!) + (copy-var set-default-transit-write-handler! impl/set-default-transit-write-handler!)) diff --git a/test-pod/pod/test_pod.clj b/test-pod/pod/test_pod.clj index 3dc0788..d834de8 100644 --- a/test-pod/pod/test_pod.clj +++ b/test-pod/pod/test_pod.clj @@ -134,8 +134,9 @@ (babashka.pods/add-transit-read-handler! \"local-date-time\" (fn [s] (java.time.LocalDateTime/parse s))) -(babashka.pods/add-transit-write-handler! \"local-date-time\" - str #{java.time.LocalDateTime}) +(babashka.pods/add-transit-write-handler! #{java.time.LocalDateTime} + \"local-date-time\" + str ) (defn local-date-time [x] (-local-date-time x))