Template::Alloy::CompiUser)Contributed Perl DocumenTemplate::Alloy::Compile(3)NAMETemplate::Alloy::Compile - Compile role - allows for compiling the AST
to perl code
DESCRIPTION
The Template::Alloy::Compile role allows for taking the AST returned by
the Parse role, and translating it into a perl code document. This is
in contrast Template::Alloy::Play which executes the AST directly.
TODO
ยท Translate compile_RAWPERL to actually output rather than calling
play_RAWPERL.
ROLE METHODS
"compile_tree"
Takes an AST returned by parse_tree and translates it into perl
code using functions stored in the $DIRECTIVES hashref.
A template that looked like the following:
Foo
[% GET foo %]
[% GET bar %]
Bar
would parse to the following perl code:
# Generated by Template::Alloy::Compile v1.001 on Thu Jun 7 12:58:33 2007
# From file /home/paul/bar.tt
my $blocks = {};
my $meta = {};
my $code = sub {
my ($self, $out_ref, $var) = @_;
$$out_ref .= 'Foo';
# "GET" Line 2 char 2 (chars 6 to 15)
$var = $self->play_expr(['foo', 0]);
$$out_ref .= defined($var) ? $var : $self->undefined_get(['foo', 0]);
# "GET" Line 3 char 2 (chars 22 to 31)
$var = $self->play_expr(['bar', 0]);
$$out_ref .= defined($var) ? $var : $self->undefined_get(['bar', 0]);
$$out_ref .= 'Bar';
return 1;
};
{
blocks => $blocks,
meta => $meta,
code => $code,
};
As you can see the output is quite a bit more complex than the AST,
but under mod_perl conditions, the perl will run faster than
playing the AST each time.
"compile_expr"
Takes an AST variable or expression and returns perl code that can
lookup the variable.
AUTHOR
Paul Seamons <paul at seamons dot com>
LICENSE
This module may be distributed under the same terms as Perl itself.
perl v5.14.1 2008-09-17 Template::Alloy::Compile(3)