mirror of
https://github.com/penpot/penpot.git
synced 2025-08-02 13:08:33 +02:00
🔧 Reorder code for more legibility
This commit is contained in:
parent
70263ba901
commit
1b3a200010
1 changed files with 118 additions and 118 deletions
|
@ -63,12 +63,6 @@
|
|||
|
||||
;; === Token
|
||||
|
||||
(def token-separator ".")
|
||||
|
||||
(defn get-token-path
|
||||
[token]
|
||||
(get-path token token-separator))
|
||||
|
||||
(defrecord Token [id name type value description modified-at])
|
||||
|
||||
(defn token?
|
||||
|
@ -92,12 +86,12 @@
|
|||
(sm/required-keys schema:token-attrs)
|
||||
[:fn token?]])
|
||||
|
||||
(def check-token
|
||||
(sm/check-fn schema:token :hint "expected valid token"))
|
||||
|
||||
(def ^:private check-token-attrs
|
||||
(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
|
||||
[& {:as attrs}]
|
||||
(-> attrs
|
||||
|
@ -107,6 +101,12 @@
|
|||
(check-token-attrs)
|
||||
(map->Token)))
|
||||
|
||||
(def token-separator ".")
|
||||
|
||||
(defn get-token-path
|
||||
[token]
|
||||
(get-path token token-separator))
|
||||
|
||||
(defn find-token-value-references
|
||||
"Returns set of token references found in `token-value`.
|
||||
|
||||
|
@ -137,6 +137,106 @@
|
|||
|
||||
;; === 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-group-prefix "G-")
|
||||
|
@ -253,106 +353,6 @@
|
|||
(assoc-in [:ids temp-id] token))))
|
||||
{: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)
|
||||
|
||||
(defprotocol ITokenSets
|
||||
|
@ -400,6 +400,9 @@
|
|||
schema:token-set-node]
|
||||
[:fn d/ordered-map?]])
|
||||
|
||||
(def ^:private check-token-sets
|
||||
(sm/check-fn schema:token-sets :hint "expected valid token sets"))
|
||||
|
||||
(def valid-token-sets?
|
||||
(sm/validator schema:token-sets))
|
||||
|
||||
|
@ -567,12 +570,18 @@
|
|||
[: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?
|
||||
(sm/validator schema:token-themes))
|
||||
|
||||
(def ^:private schema:active-themes
|
||||
[:set :string])
|
||||
|
||||
(def ^:private check-active-themes
|
||||
(sm/check-fn schema:active-themes :hint "expected valid active themes"))
|
||||
|
||||
(def valid-active-token-themes?
|
||||
(sm/validator schema:active-themes))
|
||||
|
||||
|
@ -1106,15 +1115,6 @@ Will return a value that matches this schema:
|
|||
(and (instance? TokensLib 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
|
||||
"A helper that is responsible to ensure that the hidden theme always
|
||||
exists on the themes data structure"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue