Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^3: The history of a templating engine

by ursus (Acolyte)
on Jan 03, 2008 at 19:54 UTC ( #660307=note: print w/ replies, xml ) Need Help??


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:

use UrsusTemplate::tmpl; $tmpl_sub{$tmpl_path} = sub { my $out = ''; <i>some Perl</i> $out .= "<i>some HTML</i>"; return $out; }
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:
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; }
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.

If anyone can sanity-check this for me, I'd love that.


Comment on Re^3: The history of a templating engine
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://660307]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (10)
As of 2014-07-14 09:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (257 votes), past polls