in reply to 1001 CPAN Template modules
Here's a quick sketch how this could look like:
#!/usr/bin/perl -w use strict; { package MetaTemplate::TT; use base qw(Template); } { package MetaTemplate::HTML_Template; use HTML::Template; sub new { my $class = shift; bless {}, $class; } sub process { my($self, $input, $vars, $output) = @_; my @ht_args; if (ref $input eq 'SCALAR') { @ht_args = (scalarref => $input); } else { @ht_args = (filename => $input); } my $ht = HTML::Template->new(@ht_args); if ($vars) { while(my($k,$v) = each %$vars) { $ht->param($k => $v); } } my $o = $ht->output; if (ref $output eq 'SCALAR') { $$output = $o; } elsif (defined $output) { open(my $OUT, "> $output") or die $!; print $OUT $o; } else { print $o; } } } { package MetaTemplate::Text_ScriptTemplate; use Text::ScriptTemplate; sub new { my $class = shift; bless {}, $class; } sub process { my($self, $input, $vars, $output) = @_; my $tmpl = Text::ScriptTemplate->new; if (ref $input eq 'SCALAR') { $tmpl->pack($$input); } else { $tmpl->load($input); } if ($vars) { $tmpl->setq(%$vars); } my $o = $tmpl->fill; if (ref $output eq 'SCALAR') { $$output = $o; } elsif (defined $output) { open(my $OUT, "> $output") or die $!; print $OUT $o; } else { print $o; } } } my $t1 = MetaTemplate::TT->new; $t1->process(\<<EOF, { answer => 42 }); The answer is [% answer %]. EOF my $t2 = MetaTemplate::HTML_Template->new; $t2->process(\<<EOF, { answer => 42 }); The answer is <TMPL_VAR NAME=answer>. EOF my $t3 = MetaTemplate::Text_ScriptTemplate->new; $t3->process(\<<'EOF', { answer => 42 }); The answer is <%=$answer%>. EOF
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: 1001 CPAN Template modules
by Anonymous Monk on Apr 22, 2004 at 11:37 UTC | |
by merlyn (Sage) on Apr 22, 2004 at 14:39 UTC |