(defn
read-string
"Reads one object from the string s.\n Returns nil when s is nil or empty.\n\n Reads data in the edn format (subset of Clojure data):\n http://edn-format.org\n\n opts is a map as per cljs.tools.reader.edn/read"
([s]
(edn/read-string
{:readers @*tag-table*,
:default @*default-data-reader-fn*,
:eof nil}
s))
([opts s]
(edn/read-string
(update
(merge {:default @*default-data-reader-fn*} opts)
:readers
(fn [m] (merge @*tag-table* m)))
s)))