edn serialization
This commit is contained in:
parent
4d5e8c2c43
commit
c60013f21f
21
src/hottub/serialize.clj
Normal file
21
src/hottub/serialize.clj
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
(ns hottub.serialize
|
||||||
|
(:require [clojure.edn :as edn]))
|
||||||
|
|
||||||
|
(defmethod print-dup clojure.lang.PersistentQueue [o w]
|
||||||
|
(.append w "#hottub/queue ")
|
||||||
|
(print-dup (into [] o) w))
|
||||||
|
|
||||||
|
(defn deserialize-queue [l]
|
||||||
|
(into clojure.lang.PersistentQueue/EMPTY l))
|
||||||
|
|
||||||
|
(defn write
|
||||||
|
([o] (with-open [w (java.io.StringWriter.)]
|
||||||
|
(write o w)
|
||||||
|
(.toString w)))
|
||||||
|
([o w] (print-dup o w)))
|
||||||
|
|
||||||
|
(defmulti read class)
|
||||||
|
(defmethod read String [s] (read (java.io.StringReader. s)))
|
||||||
|
(defmethod read java.io.Reader [r]
|
||||||
|
(with-open [pbr (java.io.PushbackReader. r)]
|
||||||
|
(edn/read {:readers {'hottub/queue deserialize-queue}} pbr)))
|
Loading…
Reference in a new issue