Move processing out of clojure.data.json/read call
This commit removes from the call to clojure.data.json/read the conversion of the serialised list of players into a Clojure set, and adds an independent function to do this task instead. Since the structure of the serialised data is known in advance, the recursive characteristics of clojure.data.json are not needed. Resolves issue #4 Signed-off-by: Sebastian Crane <seabass-labrax@gmx.com>
This commit is contained in:
parent
91cbdb69da
commit
6cce43f137
|
@ -6,21 +6,21 @@
|
|||
[clojure.data.json :as json]
|
||||
[clj-yaml.core :as yaml]))
|
||||
|
||||
(defn json-data-reader [key value]
|
||||
(if (= key :games)
|
||||
(into (empty value)
|
||||
(map #(hash-map (first %)
|
||||
(set (second %)))
|
||||
value))
|
||||
value))
|
||||
(defn setify-vals [x]
|
||||
(reduce #(assoc %1
|
||||
(first %2)
|
||||
(set (second %2)))
|
||||
{} x))
|
||||
|
||||
(defn process-json [x]
|
||||
(update x :games setify-vals))
|
||||
|
||||
(defn load-state [f]
|
||||
(process-json
|
||||
(try
|
||||
(with-open [datafile (clojure.java.io/reader f)]
|
||||
(json/read datafile
|
||||
:value-fn json-data-reader
|
||||
:key-fn keyword))
|
||||
(catch Exception e nil)))
|
||||
(json/read datafile :key-fn keyword))
|
||||
(catch Exception e nil))))
|
||||
|
||||
(defn save-state [f data]
|
||||
(try
|
||||
|
|
Loading…
Reference in New Issue