I was unhappy with my options for a template system on a current project, so I have created a new one which may be useful to you.
The template language is inspired by Terrence Parr’s Enforcing Strict Model-View Separation in Template Engines in which he argues that Turing complete template languages are a mistake. Logic is best left to the model and controller, with the template engine acting as a view and simply converting from the model to the desired representation.
Having used View0 for a fair bit of source code generation, I have to agree.
View0 syntax leans toward meaningful words rather than cryptic symbols for the sake of non-programmers who might need to edit templates. There are only five directives.
You can find View0 and its manual at https://bitbucket.org/jimstudt/view0.