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 $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@seamons.com>
LICENSE
This module may be distributed under the same terms as Perl itself.