Closed ninjudd closed 9 years ago
The following seems to work:
(ns app.core
(:require [tailrecursion.priority-map :refer [priority-map]]
[tailrecursion.cljson :refer [clj->cljson EncodeTagged encode]]))
(extend-protocol EncodeTagged
tailrecursion.priority-map.PersistentPriorityMap
(-encode [o] (array "tailrecursion.priority-map" (encode (.-item->priority o)))))
Should something like this be added to cljs-priority-map or cljson? What about round-tripping priority-maps from Clojure?
Hello :smile:
I don't think we want to add support for any types that aren't in both Clojure and ClojureScript, reserving extension for application writers. I think it's also good to not have dependencies.
To decode on the Clojure side in your application, you could do something like this:
Using [org.clojure/data.priority-map "0.0.7"] and [tailrecursion/cljson "1.0.7"]
(require '[clojure.data.priority-map :as pm]
'[tailrecursion.cljson :as cljson])
(defn read-pm [m]
(into (pm/priority-map) m))
(defn my-decode [x]
(binding [*data-readers* {'tailrecursion.priority-map #'read-pm}]
(cljson/decode x)))
(my-decode ["tailrecursion.priority-map" {1 2 3 4}])
It looks like they are just serialized as standard maps by default.