(tmpl form)
Template macro similar to clojure.core/syntax-quote, except does not prepend current namespace to all free symbols.
Value substitution is supported via (insert ...)
and (splice ...)
forms:
(ns demo.core
(:require [tupelo.quote :as q]))
; problem: free symbols a and b are fully-qualified using current ns
`[a b ~(+ 2 3)] => [demo.core/a
demo.core/b
5]
(q/tmpl-fn '[a b (insert (+ 2 3))]) => [a b 5]
(let [a 1 b 2]
(q/tmpl [a b (insert (+ 2 3))])) => [1 2 5]
(is= [1 [2 3 4] 5] (q/tmpl [1 (insert (t/thru 2 4)) 5]))
(is= [1 2 3 4 5] (q/tmpl [1 (splice (t/thru 2 4)) 5]))
Template macro similar to clojure.core/syntax-quote, except does not prepend current namespace to all free symbols. Value substitution is supported via `(insert ...)` and `(splice ...)` forms: ``` (ns demo.core (:require [tupelo.quote :as q])) ; problem: free symbols a and b are fully-qualified using current ns `[a b ~(+ 2 3)] => [demo.core/a demo.core/b 5] (q/tmpl-fn '[a b (insert (+ 2 3))]) => [a b 5] (let [a 1 b 2] (q/tmpl [a b (insert (+ 2 3))])) => [1 2 5] (is= [1 [2 3 4] 5] (q/tmpl [1 (insert (t/thru 2 4)) 5])) (is= [1 2 3 4 5] (q/tmpl [1 (splice (t/thru 2 4)) 5])) ```
(tmpl-fn form)
Template function similar to clojure.core/syntax-quote, except does not prepend current namespace to all free symbols.
Value substitution is supported via (insert ...)
and (splice ...)
forms:
(ns demo.core
(:require [tupelo.quote :as q]))
; problem: free symbols a and b are fully-qualified using current ns
`[a b ~(+ 2 3)] => [demo.core/a
demo.core/b
5]
(q/tmpl-fn '[a b (insert (+ 2 3))]) => [a b 5]
(let [a 1 b 2]
(q/tmpl [a b (insert (+ 2 3))])) => [1 2 5]
(is= [1 [2 3 4] 5] (q/tmpl [1 (insert (t/thru 2 4)) 5]))
(is= [1 2 3 4 5] (q/tmpl [1 (splice (t/thru 2 4)) 5]))
Template function similar to clojure.core/syntax-quote, except does not prepend current namespace to all free symbols. Value substitution is supported via `(insert ...)` and `(splice ...)` forms: ``` (ns demo.core (:require [tupelo.quote :as q])) ; problem: free symbols a and b are fully-qualified using current ns `[a b ~(+ 2 3)] => [demo.core/a demo.core/b 5] (q/tmpl-fn '[a b (insert (+ 2 3))]) => [a b 5] (let [a 1 b 2] (q/tmpl [a b (insert (+ 2 3))])) => [1 2 5] (is= [1 [2 3 4] 5] (q/tmpl [1 (insert (t/thru 2 4)) 5])) (is= [1 2 3 4 5] (q/tmpl [1 (splice (t/thru 2 4)) 5])) ```
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close