Back
istr (clj)
(source)macro
(istr & strings)
A string formating macro that works LIKE ES6 template literals but
using clojure construcs and symbols for interpolation delimiters.
It accepts one or more strings; emits a `concat` invocation that
concatenates the string data and evaluated expressions contained
within that argument.
Evaluation is controlled using ~{} and ~() forms. The former is used
for simple value replacement using clojure.core/str; the latter can
be used to embed the results of arbitrary function invocation into
the produced string.
Examples:
user=> (def v 30.5)
user=> (istr "This trial required ~{v}ml of solution.")
"This trial required 30.5ml of solution."
user=> (istr "There are ~(int v) days in November.")
"There are 30 days in November."
user=> (def m {:a [1 2 3]})
user=> (istr "The total for your order is $~(->> m :a (apply +)).")
"The total for your order is $6."
user=> (istr "Just split a long interpolated string up into ~(-> m :a (get 0)), "
"~(-> m :a (get 1)), or even ~(-> m :a (get 2)) separate strings "
"if you don't want a << expression to end up being e.g. ~(* 4 (int v)) "
"columns wide.")
"Just split a long interpolated string up into 1, 2, or even 3 separate strings if you don't want a << expression to end up being e.g. 120 columns wide."
Note that quotes surrounding string literals within ~() forms must be
escaped.