John Resig's Micro-Templating in 140 bytes (138 actually).
Please see John's original article for template syntax and more examples.
with (data){ ... }
implementation is longer, so the v
variable must be used to access the supplied data like this: <%= v.foo || 'No foo' %>
@atk
\n allows double slash comment:
<% for (;;) { // loop description %>
. So no real reason for an extra byte.Your code with recursive regex is extremely clever. Just wow.