diff --git a/src/kioo/core.clj b/src/kioo/core.clj index 70dddfd..c7c317e 100644 --- a/src/kioo/core.clj +++ b/src/kioo/core.clj @@ -7,6 +7,7 @@ [clojure.string :as string] [kioo.html-parser :as parser] [hickory.core :as hickory] + [kioo.common :as common] [clojure.java.io :as io])) (declare compile component*) @@ -91,9 +92,18 @@ (map? sel) {} :else []) sel)) +(defn apply-and-attach-transforms [node sel trans] + (cond + (vector? trans) (recur node sel {`(common/content) (list* trans)}) + (not (map? trans)) (recur node sel {`identity trans}) + :else (let [[compile-time runtime] (first trans)] + (-> node + (at (eval-selector sel) (eval compile-time)) + (at (eval-selector sel) (attach-transform runtime)))))) + (defn map-trans [node trans-lst] (reduce (fn [node [sel trans]] - (at node (eval-selector sel) (attach-transform trans))) + (apply-and-attach-transforms node sel trans)) node trans-lst)) diff --git a/test/kioo/core_test.cljs b/test/kioo/core_test.cljs index 46d2914..3abc117 100644 --- a/test/kioo/core_test.cljs +++ b/test/kioo/core_test.cljs @@ -21,6 +21,14 @@ (let [comp (component "simple-div.html" {[:div] (content "success")})] (is (= "