Template::Document

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
Template::Document(3)User Contributed Perl DocumentationTemplate::Document(3)



NAME
       Template::Document - Compiled template document object

SYNOPSIS
	   use Template::Document;

	   $doc = Template::Document->new({
	       BLOCK => sub { # some perl code; return $some_text },
	       DEFBLOCKS => {
		   header => sub { # more perl code; return $some_text },
		   footer => sub { # blah blah blah; return $some_text },
	       },
	       METADATA => {
		   author  => ’Andy Wardley’,
		   version => 3.14,
	       }
	   }) ││ die $Template::Document::ERROR;

	   print $doc->process($context);

DESCRIPTION
       This module defines an object class whose instances represent compiled
       template documents.  The Template::Parser module creates a "Tem-
       plate::Document" instance to encapsulate a template as it is compiled
       into Perl code.

       The constructor method, new(), expects a reference to a hash array
       containing the "BLOCK", "DEFBLOCKS" and "METADATA" items.

       The "BLOCK" item should contain a reference to a Perl subroutine or a
       textual representation of Perl code, as generated by the Tem-
       plate::Parser module.  This is then evaluated into a subroutine refer-
       ence using "eval()".

       The "DEFLOCKS" item should reference a hash array containing further
       named "BLOCK"s which may be defined in the template. The keys repre-
       sent "BLOCK" names and the values should be subroutine references or
       text strings of Perl code as per the main "BLOCK" item.

       The "METADATA" item should reference a hash array of metadata items
       relevant to the document.

       The process() method can then be called on the instantiated "Tem-
       plate::Document" object, passing a reference to a Template::Context
       object as the first parameter. This will install any locally defined
       blocks ("DEFBLOCKS") in the "BLOCKS" cache in the context (via a call
       to visit()) so that they may be subsequently resolved by the context.
       The main "BLOCK" subroutine is then executed, passing the context ref-
       erence on as a parameter. The text returned from the template subrou-
       tine is then returned by the process() method, after calling the con-
       text leave() method to permit cleanup and de-registration of named
       "BLOCKS" previously installed.

       An "AUTOLOAD" method provides access to the "METADATA" items for the
       document. The Template::Service module installs a reference to the
       main "Template::Document" object in the stash as the "template" vari-
       able. This allows metadata items to be accessed from within templates,
       including "PRE_PROCESS" templates.

       header:

	   <html>
	   <head>
	   <title>[% template.title %]
	   </head>
	   ...

       "Template::Document" objects are usually created by the Tem-
       plate::Parser but can be manually instantiated or sub-classed to pro-
       vide custom template components.

METHODS
       new(\%config)

       Constructor method which accept a reference to a hash array containing
       the structure as shown in this example:

	   $doc = Template::Document->new({
	       BLOCK => sub { # some perl code; return $some_text },
	       DEFBLOCKS => {
		   header => sub { # more perl code; return $some_text },
		   footer => sub { # blah blah blah; return $some_text },
	       },
	       METADATA => {
		   author  => ’Andy Wardley’,
		   version => 3.14,
	       }
	   }) ││ die $Template::Document::ERROR;

       "BLOCK" and "DEFBLOCKS" items may be expressed as references to Perl
       subroutines or as text strings containing Perl subroutine definitions,
       as is generated by the Template::Parser module.	These are evaluated
       into subroutine references using "eval()".

       Returns a new "Template::Document" object or "undef" on error. The
       error() class method can be called, or the $ERROR package variable
       inspected to retrieve the relevant error message.

       process($context)

       Main processing routine for the compiled template document. A refer-
       ence to a Template::Context object should be passed as the first
       parameter. The method installs any locally defined blocks via a call
       to the context visit() method, processes its own template, (passing
       the context reference as a parameter) and then calls leave() in the
       context to allow cleanup.

	   print $doc->process($context);

       Returns a text string representing the generated output for the tem-
       plate.  Errors are thrown via "die()".

       block()

       Returns a reference to the main "BLOCK" subroutine.

       blocks()

       Returns a reference to the hash array of named "DEFBLOCKS" subrou-
       tines.

       AUTOLOAD

       An autoload method returns "METADATA" items.

	   print $doc->author();

PACKAGE SUB-ROUTINES
       write_perl_file(\%config)

       This package subroutine is provided to effect persistence of compiled
       templates.  If the "COMPILE_EXT" option (to indicate a file extension
       for saving compiled templates) then the Template::Parser module calls
       this subroutine before calling the new() constructor.  At this stage,
       the parser has a representation of the template as text strings con-
       taining Perl code.  We can write that to a file, enclosed in a small
       wrapper which will allow us to susequently "require()" the file and
       have Perl parse and compile it into a "Template::Document".  Thus we
       have persistence of compiled templates.

AUTHOR
       Andy Wardley <abw@wardley.org> <http://wardley.org/>

COPYRIGHT
       Copyright (C) 1996-2007 Andy Wardley.  All Rights Reserved.

       This module is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

SEE ALSO
       Template, Template::Parser



perl v5.8.8			  2007-05-29		Template::Document(3)