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 LibreGaming/matchbot#4

Signed-off-by: Sebastian Crane <seabass-labrax@gmx.com>
This commit is contained in:
Sebastian Crane 2022-03-28 21:52:52 +01:00
parent 91cbdb69da
commit 6cce43f137
1 changed files with 13 additions and 13 deletions

View File

@ -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]
(try
(with-open [datafile (clojure.java.io/reader f)]
(json/read datafile
:value-fn json-data-reader
:key-fn keyword))
(catch Exception e nil)))
(process-json
(try
(with-open [datafile (clojure.java.io/reader f)]
(json/read datafile :key-fn keyword))
(catch Exception e nil))))
(defn save-state [f data]
(try