mirror of
https://github.com/penpot/penpot.git
synced 2025-02-07 23:08:24 -05:00
Check for self references
This commit is contained in:
parent
941fb041b6
commit
1dcdddb2db
2 changed files with 23 additions and 6 deletions
|
@ -82,13 +82,15 @@
|
||||||
|
|
||||||
;; Value
|
;; Value
|
||||||
value (mf/use-var (or (:value token) ""))
|
value (mf/use-var (or (:value token) ""))
|
||||||
resolved-value (mf/use-state (get-in tokens [(:id token) :resolved-value]))
|
token-resolve-result (mf/use-state (get-in tokens [(:id token) :resolved-value]))
|
||||||
set-resolve-value (mf/use-callback
|
set-resolve-value (mf/use-callback
|
||||||
(fn [token]
|
(fn [token-or-err]
|
||||||
(when (:resolved-value token)
|
(let [value (cond
|
||||||
(reset! resolved-value (:resolved-value token)))))
|
(= token-or-err :error/token-self-reference) :error/token-self-reference
|
||||||
value-errors (mf/use-state nil)
|
(= token-or-err :error/token-missing-reference) :error/token-missing-reference
|
||||||
on-update-value (sd/use-debonced-resolve-callback tokens set-resolve-value)]
|
(:resolved-value token-or-err) (:resolved-value token-or-err))]
|
||||||
|
(reset! token-resolve-result value))))
|
||||||
|
on-update-value (sd/use-debonced-resolve-callback name token tokens set-resolve-value)]
|
||||||
|
|
||||||
;; on-submit (fn [e]
|
;; on-submit (fn [e]
|
||||||
;; (dom/prevent-default e)
|
;; (dom/prevent-default e)
|
||||||
|
|
|
@ -23,6 +23,21 @@
|
||||||
|
|
||||||
;; Functions -------------------------------------------------------------------
|
;; Functions -------------------------------------------------------------------
|
||||||
|
|
||||||
|
(defn token-self-reference? [token-name reference-string]
|
||||||
|
(let [escaped-name (str/replace token-name "." "\\.")
|
||||||
|
regex (-> (str "{" escaped-name "}")
|
||||||
|
(re-pattern))]
|
||||||
|
(re-find regex reference-string)))
|
||||||
|
|
||||||
|
(comment
|
||||||
|
(token-self-reference? {:name "some.value"} "{md} + {some.value}")
|
||||||
|
(token-self-reference? {:name "some.value"} "some.value")
|
||||||
|
(token-self-reference? {:name "some.value"} "{some|value}")
|
||||||
|
(token-self-reference? {:name "sm"} "{md} + {lg}")
|
||||||
|
(token-self-reference? {:name "sm"} "1")
|
||||||
|
(token-self-reference? {:name ""} "121")
|
||||||
|
nil)
|
||||||
|
|
||||||
(defn tokens->style-dictionary+
|
(defn tokens->style-dictionary+
|
||||||
"Resolves references and math expressions using StyleDictionary.
|
"Resolves references and math expressions using StyleDictionary.
|
||||||
Returns a promise with the resolved dictionary."
|
Returns a promise with the resolved dictionary."
|
||||||
|
|
Loading…
Add table
Reference in a new issue