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