Template::Parser(3pm)
NAME
Template::Parser - LALR(1) parser for compiling template documents
SYNOPSIS
use Template::Parser;
$parser = Template::Parser->new(\%config);
$template = $parser->parse($text)
|| die $parser->error(), "\n";
DESCRIPTION
The "Template::Parser" module implements a LALR(1) parser and
associated methods for parsing template documents into Perl code.
PUBLIC METHODS
- new(\%params)
- The "new()" constructor creates and returns a reference to a new
"Template::Parser" object. - A reference to a hash may be supplied as a parameter to provide
configuration values. See "CONFIGURATION OPTIONS" below for a summary of these options and Template::Manual::Config for full details.
my $parser = Template::Parser->new({START_TAG => quotemeta('<+'),
END_TAG => quotemeta('+>'),}); - parse($text)
- The "parse()" method parses the text passed in the first parameter and
returns a reference to a hash array of data defining the compiled
representation of the template text, suitable for passing to the
Template::Document new() constructor method. On error, undef is returned.
$data = $parser->parse($text)|| die $parser->error(); - The $data hash reference returned contains a "BLOCK" item containing
the compiled Perl code for the template, a "DEFBLOCKS" item containing a reference to a hash array of sub-template "BLOCK"s defined within in the template, and a "METADATA" item containing a reference to a hash
array of metadata values defined in "META" tags.
CONFIGURATION OPTIONS
- The "Template::Parser" module accepts the following configuration
options. Please see Template::Manual::Config for futher details on
each option. - START_TAG, END_TAG
- The START_TAG and END_TAG options are used to specify character
sequences or regular expressions that mark the start and end of a
template directive.
my $parser = Template::Parser->new({START_TAG => quotemeta('<+'),
END_TAG => quotemeta('+>'),}); - TAG_STYLE
- The TAG_STYLE option can be used to set both START_TAG and END_TAG
according to pre-defined tag styles.
my $parser = Template::Parser->new({TAG_STYLE => 'star', # [* ... *]}); - PRE_CHOMP, POST_CHOMP
- The PRE_CHOMP and POST_CHOMP can be set to remove any whitespace before
or after a directive tag, respectively.
my $parser = Template::Parser-E<gt>new({PRE_CHOMP => 1,
POST_CHOMP => 1,}); - INTERPOLATE
- The INTERPOLATE flag can be set to allow variables to be embedded in
plain text blocks.
my $parser = Template::Parser->new({INTERPOLATE => 1,}); - Variables should be prefixed by a "$" to identify them, using curly
braces to explicitly scope the variable name where necessary.
Hello ${name},The day today is ${day.today}. - ANYCASE
- The ANYCASE option can be set to allow directive keywords to be
specified in any case.
# with ANYCASE set to 1
[% INCLUDE foobar %] # OK
[% include foobar %] # OK
[% include = 10 %] # ERROR, 'include' is a reserved word - GRAMMAR
- The GRAMMAR configuration item can be used to specify an alternate
grammar for the parser. This allows a modified or entirely new template language to be constructed and used by the Template Toolkit.
use MyOrg::Template::Grammar;my $parser = Template::Parser->new({GRAMMAR = MyOrg::Template::Grammar->new();}); - By default, an instance of the default Template::Grammar will be
created and used automatically if a "GRAMMAR" item isn't specified. - DEBUG
- The DEBUG option can be used to enable various debugging features of
the "Template::Parser" module.
use Template::Constants qw( :debug );my $template = Template->new({DEBUG => DEBUG_PARSER | DEBUG_DIRS,});
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.
- The main parsing loop of the "Template::Parser" module was derived from
a standalone parser generated by version 0.16 of the "Parse::Yapp"
module. The following copyright notice appears in the "Parse::Yapp"
documentation. - The Parse::Yapp module and its related modules and shell
scripts are copyright (c) 1998 Francois Desarmenien,
France. All rights reserved. - You may use and distribute them under the terms of either
the GNU General Public License or the Artistic License, as
specified in the Perl README file.
SEE ALSO
- Template, Template::Grammar, Template::Directive