diff --git a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs b/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs index b81d43121..104ee9c2d 100644 --- a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs @@ -24,21 +24,12 @@ ;; Functions ------------------------------------------------------------------- (defn find-token-references - "Finds token reference values in `str` and returns a set with all contained namespaces." - [str] - (some->> (re-seq #"\{([^}]*)\}" str) + "Finds token reference values in `value-string` and returns a set with all contained namespaces." + [value-string] + (some->> (re-seq #"\{([^}]*)\}" value-string) (map second) (into #{}))) -(comment - (find-token-references "{foo} + {bar}") - ;; => #{"foo" "bar"} - (find-token-references "{foo.bar.baz} + something") - ;; => #{"foo.bar.baz"} - (find-token-references "1 + 2") - ;; => nil - nil) - (defn token-self-reference? [token-name reference-string] (let [escaped-name (str/replace token-name "." "\\.") regex (-> (str "{" escaped-name "}") diff --git a/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs b/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs new file mode 100644 index 000000000..45e561c1a --- /dev/null +++ b/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs @@ -0,0 +1,19 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC +(ns frontend-tests.tokens.style-dictionary-test + (:require + [app.main.ui.workspace.tokens.style-dictionary :as wtsd] + [cljs.test :as t :include-macros true])) + +(t/deftest test-find-token-references + ;; Return references + (t/is (= #{"foo" "bar"} (wtsd/find-token-references "{foo} + {bar}"))) + ;; Ignore non reference text + (t/is (= #{"foo.bar.baz"} (wtsd/find-token-references "{foo.bar.baz} + something"))) + ;; No references found + (t/is (nil? (wtsd/find-token-references "1 + 2"))) + ;; Edge-case: Ignore unmatched closing parens + (t/is (= #{"foo" "bar"} (wtsd/find-token-references "{foo}} + {bar}"))))