This language compiles templates into Emacs Lisp functions that can
be called with different sets of variables. This work is inspired
by Jinja and among its main features, it supports if statements,
for loops, and a good amount of expressions that make it simpler to
manipulate data within the template.
(require 'templatel)
(templatel-render-string
"
{{ title }}
"
'(("title" . "A nice web page")
("users" . ((("url" . "http://clarete.li")
("name" . "link"))
(("url" . "http://gnu.org")
("name" . "Gnu!!"))))))
This library also provides template in heritance and automatic HTML
entity escaping among other things. Take a look at the
documentation website for all the features:
https://clarete.li/templatel/doc.