in reply to Re^2: The history of a templating engine
in thread The history of a templating engine
I'm looking at rolling my own template system as well. I had that "switch the quotes" moment as well, but without actually coming up with words for it.
Anyhow, here's how I intend to handle the data thwomping problem, as well as STDOUT. Templates are to be mangled into:
Which gets evaled. As long as your code uses my (or the template engine inserts it), you have data safety. Imported via UrsusTemplate::tmpl, we have:use UrsusTemplate::tmpl; $tmpl_sub{$tmpl_path} = sub { my $out = ''; <i>some Perl</i> $out .= "<i>some HTML</i>"; return $out; }
Now we have an easy way to do includes, plus an API for the controller. If we keep the timestamp from the source file, we can easily implement caching as well.sub run { my $tmpl_path = shift; generate($tmpl_path) unless $tmpl_sub{$tmpl_path}; return $tmpl_sub{$tmpl_path}->(@_); #goto &$tmpl_sub{$tmpl_path}; #if you want to scare the other devs ;-) } sub emit { print $site_head; print run(@_); print $site_tail; }
If anyone can sanity-check this for me, I'd love that.
|
---|
In Section
Meditations