apply-template

clojure.template

  • (apply-template argv expr values)
For use in macros. argv is an argument list, as in defn. expr is
a quoted expression using the symbols in argv. values is a sequence
of values to be used for the arguments.

apply-template will recursively replace argument symbols in expr
with their corresponding values, returning a modified expr.

Example: (apply-template '[x] '(+ x x) '[2])
;=> (+ 2 2)

1 Example top

  • user=> (apply-template '[a b c d e] '[d a b e c e b a d] '(1 2 3 4 5))
    [4 1 2 5 3 5 2 1 4]  
    
    user=> (apply-template '[a b c d e] '[d a b e c e b a d] '(1 [2 3] [4 5]))
    [d 1 [2 3] e [4 5] e [2 3] 1 d]
Log in to add / edit an example.

See Also top

Log in to add a see also.

Plus_12x12 Minus_12x12 Source clojure/template.clj:30 top

(defn apply-template
  "For use in macros.  argv is an argument list, as in defn.  expr is
  a quoted expression using the symbols in argv.  values is a sequence
  of values to be used for the arguments.

  apply-template will recursively replace argument symbols in expr
  with their corresponding values, returning a modified expr.

  Example: (apply-template '[x] '(+ x x) '[2])
           ;=> (+ 2 2)"
  [argv expr values]
  (assert (vector? argv))
  (assert (every? symbol? argv))
  (walk/prewalk-replace (zipmap argv values) expr))
Vars in clojure.template/apply-template:
Used in 0 other vars

Comments top

No comments for apply-template. Log in to add a comment.