Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Template::Alloy::CompiUser)Contributed Perl DocumenTemplate::Alloy::Compile(3)

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
       o   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.

perl v5.32.0			  2013-09-20	   Template::Alloy::Compile(3)

NAME | DESCRIPTION | TODO | ROLE METHODS | AUTHOR | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Template::Alloy::Compile&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help