From 91635d0b6d1712ecbf3f287455093246456d9209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20S=C3=A1nchez?= Date: Mon, 22 May 2017 21:48:30 +0200 Subject: [PATCH 1/3] Create independent version of gensym --- src/cljs_css_modules/macro.cljc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/cljs_css_modules/macro.cljc b/src/cljs_css_modules/macro.cljc index 2af61e9..ebdbc80 100644 --- a/src/cljs_css_modules/macro.cljc +++ b/src/cljs_css_modules/macro.cljc @@ -14,6 +14,25 @@ [env] (boolean (:ns env))) +(def ^:private pseudo-gensym-id + "The pseudo-gensym atom" + (atom 0)) + +(defn- pseudo-gensym-nextid + "Increments the pseudo-gensym atom and returns the new value" + [] + (swap! pseudo-gensym-id inc)) + +(defn pseudo-gensym-reset + "Resets the pseudo-gensym atom" + [] + (reset! pseudo-gensym-id 0)) + +(defn pseudo-gensym + "Independent version of gensym. This allows generating the same classes in both client and server" + ([] (pseudo-gensym "PG__")) + ([prefix-string] (. clojure.lang.Symbol (intern (str prefix-string (str (pseudo-gensym-nextid))))))) + ; for now we localise only simple class and keyframes (def selectors-to-localise [{:id :class @@ -164,7 +183,7 @@ :else style) css (symbol "garden.core" "css") inject-style-fn (symbol "cljs-css-modules.runtime" "inject-style!") - id (if test-flag "test" (gensym)) + id (if test-flag "test" (pseudo-gensym)) {:keys [style map]} (reduce (partial create-garden-style id) {:map {} :style []} From b1bf7c86151d3b63bcd20d5202bdb1cbae6c9603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20S=C3=A1nchez?= Date: Mon, 22 May 2017 21:49:06 +0200 Subject: [PATCH 2/3] Avoid accidental override of clojure.core/test (detected thanks to jonase/eastwood) --- test/clj/cljs_css_modules/core_test.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/clj/cljs_css_modules/core_test.clj b/test/clj/cljs_css_modules/core_test.clj index 7c247e5..2c2ccd6 100644 --- a/test/clj/cljs_css_modules/core_test.clj +++ b/test/clj/cljs_css_modules/core_test.clj @@ -72,7 +72,7 @@ (deftest defstyle-macro (testing "defstyle macro should return a map containing an id for each class " - (defstyle test + (defstyle test-style {:pretty-print? false} (at-keyframes "keyframe-1" [:from {:top "50px"}] @@ -94,7 +94,7 @@ [".class-2" ".lol" {:margin "50px"}] [".class-3" {:margin-top "60px" :padding "50px"}] true) - (let [{:keys [map css] :as style} test] + (let [{:keys [map css] :as style} test-style] (is (= css (str "@keyframes keyframe-1--test{" From 6be95ab3e8998a6e773608e95798552c1d9d649b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20S=C3=A1nchez?= Date: Mon, 22 May 2017 21:51:49 +0200 Subject: [PATCH 3/3] Update clojure and clojurescript --- project.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project.clj b/project.clj index f182d7e..5e0656b 100644 --- a/project.clj +++ b/project.clj @@ -6,8 +6,8 @@ :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} - :dependencies [[org.clojure/clojure "1.7.0"] - [org.clojure/clojurescript "1.8.34"] + :dependencies [[org.clojure/clojure "1.8.0"] + [org.clojure/clojurescript "1.9.542"] [garden "1.3.2"]] :test-paths ["test/clj"]