[Templates] TT for error messages
Paul Seamons
mail@seamons.com
Thu, 19 Jul 2007 08:57:20 -0600
> Can I avoid reparsing the message templates somehow?
This is one of the things that will be fixed if TT3 uses MD5 sums to identify
stringrefs. Template::Alloy does it for you currently.
use Template::Alloy;
my $tt = Template::Alloy->new(
INTERPOLATE => 1,
START_TAG => quotemeta('<<'),
END_TAG => quotemeta('>>'),
# need some way to tell it to cache between uses
COMPILE_DIR => '/tmp',
);
>
> # msg_template would come from a database
> my $msg_template =
> 'Line $lineno too short, length <<line.length || 0>>, line.quote';
> my $context = { line => "a b c\cM", lineno => 123 };
>
> my $message;
> $tt->process(\$msg_template, $context, \$message)
> or do {
> warn "Message template error: ".$tt->error;
> $message = $msg_template;
> };
>
> print $message, "\n";
That bit should work without modification.
Paul