🔧 Reorder code for more legibility

This commit is contained in:
Andrés Moya 2025-05-29 12:03:03 +02:00 committed by Andrés Moya
parent 70263ba901
commit 1b3a200010

View file

@ -63,12 +63,6 @@
;; === Token ;; === Token
(def token-separator ".")
(defn get-token-path
[token]
(get-path token token-separator))
(defrecord Token [id name type value description modified-at]) (defrecord Token [id name type value description modified-at])
(defn token? (defn token?
@ -92,12 +86,12 @@
(sm/required-keys schema:token-attrs) (sm/required-keys schema:token-attrs)
[:fn token?]]) [:fn token?]])
(def check-token
(sm/check-fn schema:token :hint "expected valid token"))
(def ^:private check-token-attrs (def ^:private check-token-attrs
(sm/check-fn schema:token-attrs :hint "expected valid params for token")) (sm/check-fn schema:token-attrs :hint "expected valid params for token"))
(def check-token
(sm/check-fn schema:token :hint "expected valid token"))
(defn make-token (defn make-token
[& {:as attrs}] [& {:as attrs}]
(-> attrs (-> attrs
@ -107,6 +101,12 @@
(check-token-attrs) (check-token-attrs)
(map->Token))) (map->Token)))
(def token-separator ".")
(defn get-token-path
[token]
(get-path token token-separator))
(defn find-token-value-references (defn find-token-value-references
"Returns set of token references found in `token-value`. "Returns set of token references found in `token-value`.
@ -137,6 +137,106 @@
;; === Token Set ;; === Token Set
(defprotocol ITokenSet
(add-token [_ token] "add a token at the end of the list")
(update-token [_ token-name f] "update a token in the list")
(delete-token [_ token-name] "delete a token from the list")
(get-token [_ token-name] "return token by token-name")
(get-tokens [_] "return an ordered sequence of all tokens in the set"))
(defrecord TokenSet [id name description modified-at tokens]
ITokenSet
(add-token [_ token]
(let [token (check-token token)]
(TokenSet. id
name
description
(dt/now)
(assoc tokens (:name token) token))))
(update-token [this token-name f]
(if-let [token (get tokens token-name)]
(let [token' (-> (make-token (f token))
(assoc :modified-at (dt/now)))]
(TokenSet. id
name
description
(dt/now)
(if (= (:name token) (:name token'))
(assoc tokens (:name token') token')
(-> tokens
(d/oassoc-before (:name token) (:name token') token')
(dissoc (:name token))))))
this))
(delete-token [_ token-name]
(TokenSet. id
name
description
(dt/now)
(dissoc tokens token-name)))
(get-token [_ token-name]
(get tokens token-name))
(get-tokens [_]
(vals tokens)))
(defn token-set?
[o]
(instance? TokenSet o))
(def schema:token-set-attrs
[:map {:title "TokenSet"}
[:id ::sm/uuid]
[:name :string]
[:description {:optional true} :string]
[:modified-at {:optional true} ::sm/inst]
[:tokens {:optional true
:gen/gen (->> (sg/map-of (sg/generator ::sm/text)
(sg/generator schema:token))
(sg/fmap #(into (d/ordered-map) %)))}
[:and
[:map-of {:gen/max 5
:decode/json (fn [v]
(cond
(d/ordered-map? v)
v
(map? v)
(into (d/ordered-map) v)
:else
v))}
:string schema:token]
[:fn d/ordered-map?]]]])
(declare make-token-set)
(def schema:token-set
[:and {:gen/gen (->> (sg/generator schema:token-set-attrs)
(sg/fmap #(make-token-set %)))}
(sm/required-keys schema:token-set-attrs)
[:fn token-set?]])
(sm/register! ::token-set schema:token-set) ;; Need to register for the recursive schema of token-sets
(def ^:private check-token-set-attrs
(sm/check-fn schema:token-set-attrs :hint "expected valid params for token-set"))
(def check-token-set
(sm/check-fn schema:token-set :hint "expected valid token set"))
(defn make-token-set
[& {:as attrs}]
(-> attrs
(update :id #(or % (uuid/next)))
(update :modified-at #(or % (dt/now)))
(update :tokens #(into (d/ordered-map) %))
(update :description d/nilv "")
(check-token-set-attrs)
(map->TokenSet)))
(def set-prefix "S-") (def set-prefix "S-")
(def set-group-prefix "G-") (def set-group-prefix "G-")
@ -253,106 +353,6 @@
(assoc-in [:ids temp-id] token)))) (assoc-in [:ids temp-id] token))))
{:tokens-tree {} :ids {}} tokens)) {:tokens-tree {} :ids {}} tokens))
(defprotocol ITokenSet
(add-token [_ token] "add a token at the end of the list")
(update-token [_ token-name f] "update a token in the list")
(delete-token [_ token-name] "delete a token from the list")
(get-token [_ token-name] "return token by token-name")
(get-tokens [_] "return an ordered sequence of all tokens in the set"))
(defrecord TokenSet [id name description modified-at tokens]
ITokenSet
(add-token [_ token]
(let [token (check-token token)]
(TokenSet. id
name
description
(dt/now)
(assoc tokens (:name token) token))))
(update-token [this token-name f]
(if-let [token (get tokens token-name)]
(let [token' (-> (make-token (f token))
(assoc :modified-at (dt/now)))]
(TokenSet. id
name
description
(dt/now)
(if (= (:name token) (:name token'))
(assoc tokens (:name token') token')
(-> tokens
(d/oassoc-before (:name token) (:name token') token')
(dissoc (:name token))))))
this))
(delete-token [_ token-name]
(TokenSet. id
name
description
(dt/now)
(dissoc tokens token-name)))
(get-token [_ token-name]
(get tokens token-name))
(get-tokens [_]
(vals tokens)))
(defn token-set?
[o]
(instance? TokenSet o))
(def schema:token-set-attrs
[:map {:title "TokenSet"}
[:id ::sm/uuid]
[:name :string]
[:description {:optional true} :string]
[:modified-at {:optional true} ::sm/inst]
[:tokens {:optional true
:gen/gen (->> (sg/map-of (sg/generator ::sm/text)
(sg/generator schema:token))
(sg/fmap #(into (d/ordered-map) %)))}
[:and
[:map-of {:gen/max 5
:decode/json (fn [v]
(cond
(d/ordered-map? v)
v
(map? v)
(into (d/ordered-map) v)
:else
v))}
:string schema:token]
[:fn d/ordered-map?]]]])
(declare make-token-set)
(def schema:token-set
[:and {:gen/gen (->> (sg/generator schema:token-set-attrs)
(sg/fmap #(make-token-set %)))}
(sm/required-keys schema:token-set-attrs)
[:fn token-set?]])
(sm/register! ::token-set schema:token-set)
(def check-token-set
(sm/check-fn schema:token-set :hint "expected valid token set"))
(def ^:private check-token-set-attrs
(sm/check-fn schema:token-set-attrs :hint "expected valid params for token-set"))
(defn make-token-set
[& {:as attrs}]
(-> attrs
(update :id #(or % (uuid/next)))
(update :modified-at #(or % (dt/now)))
(update :tokens #(into (d/ordered-map) %))
(update :description d/nilv "")
(check-token-set-attrs)
(map->TokenSet)))
;; === TokenSets (collection) ;; === TokenSets (collection)
(defprotocol ITokenSets (defprotocol ITokenSets
@ -400,6 +400,9 @@
schema:token-set-node] schema:token-set-node]
[:fn d/ordered-map?]]) [:fn d/ordered-map?]])
(def ^:private check-token-sets
(sm/check-fn schema:token-sets :hint "expected valid token sets"))
(def valid-token-sets? (def valid-token-sets?
(sm/validator schema:token-sets)) (sm/validator schema:token-sets))
@ -567,12 +570,18 @@
[:fn d/ordered-map?]]] [:fn d/ordered-map?]]]
[:fn d/ordered-map?]]) [:fn d/ordered-map?]])
(def ^:private check-token-themes
(sm/check-fn schema:token-themes :hint "expected valid token themes"))
(def valid-token-themes? (def valid-token-themes?
(sm/validator schema:token-themes)) (sm/validator schema:token-themes))
(def ^:private schema:active-themes (def ^:private schema:active-themes
[:set :string]) [:set :string])
(def ^:private check-active-themes
(sm/check-fn schema:active-themes :hint "expected valid active themes"))
(def valid-active-token-themes? (def valid-active-token-themes?
(sm/validator schema:active-themes)) (sm/validator schema:active-themes))
@ -1106,15 +1115,6 @@ Will return a value that matches this schema:
(and (instance? TokensLib o) (and (instance? TokensLib o)
(validate o))) (validate o)))
(def ^:private check-token-sets
(sm/check-fn schema:token-sets :hint "expected valid token sets"))
(def ^:private check-token-themes
(sm/check-fn schema:token-themes :hint "expected valid token themes"))
(def ^:private check-active-themes
(sm/check-fn schema:active-themes :hint "expected valid active themes"))
(defn- ensure-hidden-theme (defn- ensure-hidden-theme
"A helper that is responsible to ensure that the hidden theme always "A helper that is responsible to ensure that the hidden theme always
exists on the themes data structure" exists on the themes data structure"