NAME
Template::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
$DIRECTIVEShashref.A template that looked like the following:
Foo[% GET foo %][% GET bar %]Barwould 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.ttmy $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 <[email protected]>
LICENSE
This module may be distributed under the same terms as Perl itself.