Current Path : /usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/ |
Current File : //usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/Parser.html |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"> <html> <head> <title>Template::Parser</title> <link rel="stylesheet" type="text/css" href="../../css/blue.css" title="Clear Blue"> <link rel="alternate stylesheet" type="text/css" href="../../css/orange.css" title="Clear Orange"> <link rel="alternate stylesheet" type="text/css" href="../../css/green.css" title="Clear Green"> <link rel="alternate stylesheet" type="text/css" href="../../css/purple.css" title="Clear Purple"> <link rel="alternate stylesheet" type="text/css" href="../../css/grey.css" title="Clear Grey"> <!--[if IE 6]> <link rel="stylesheet" type="text/css" href="../../css/ie6.css" /> <![endif]--> <link rel="stylesheet" type="text/css" href="/css/print.css" media="print"> <script type="text/javascript" src="../../js/tt2.js"></script> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta name="author" content="Andy Wardley"> </head> <body id="body"> <div id="layout"> <div id="header"> <a href="../../index.html" id="logo" alt="" title="Click for the Home Page"><span class="alt">TT2 Home Page</span></a> <ul id="trail"> <li><a href="../../modules/index.html">Modules</a></li> <li><a href="../../modules/Template/index.html">Template::*</a></li> <li class="last"><a href="../../modules/Template/Parser.html">Parser.pm</a></li> </ul> <div class="controls"> <a href="#" class="menu show" onclick="widescreen_off(); return false" title="Show Menu"> <span class="about">Click to view the menu. It's very nice.</span> </a> <a href="#" class="menu hide" onclick="widescreen_on(); return false" title="Hide Menu"> <span class="about">Click to hide the menu and go all widescreen!</span> </a> <div class="pager"> <a href="../../modules/Template/Namespace/index.html" title="Template::Namespace::* Modules" class="go back">Back<span class="about"><h4>Template::Namespace::* Modules</h4></span></a> <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a> <a href="../../modules/Template/Plugin.html" title="Template::Plugin" class="go next">Next<span class="about"><h4>Template::Plugin</h4>Base class for Template Toolkit plugins</span></a> </div> </div> <h1 class="headline">Template::Parser</h1> <h2 class="subhead">LALR(1) parser for compiling template documents</h1> </div> <div id="page"> <div id="sidebar"> <a href="../../index.html" id="logo"></a> <div id="menu"> <ul class="menu"> <li class="l0 first"><a href="../../manual/index.html">Manual</a></li> <li class="l0"><a href="../../modules/index.html" class="warm">Modules</a></li> <li class="l1"><a href="../../modules/Template.html">Template.pm</a></li> <li class="l1"><a href="../../modules/Template/index.html" class="warm">Template::*</a></li> <li class="l2"><a href="../../modules/Template/Base.html">Base.pm</a></li> <li class="l2"><a href="../../modules/Template/Config.html">Config.pm</a></li> <li class="l2"><a href="../../modules/Template/Constants.html">Constants.pm</a></li> <li class="l2"><a href="../../modules/Template/Context.html">Context.pm</a></li> <li class="l2"><a href="../../modules/Template/Directive.html">Directive.pm</a></li> <li class="l2"><a href="../../modules/Template/Document.html">Document.pm</a></li> <li class="l2"><a href="../../modules/Template/Exception.html">Exception.pm</a></li> <li class="l2"><a href="../../modules/Template/Filters.html">Filters.pm</a></li> <li class="l2"><a href="../../modules/Template/Grammar.html">Grammar.pm</a></li> <li class="l2"><a href="../../modules/Template/Iterator.html">Iterator.pm</a></li> <li class="l2"><a href="../../modules/Template/Namespace/index.html">Namespace::*</a></li> <li class="l2"><a href="../../modules/Template/Parser.html" class="warm">Parser.pm</a></li> <li class="l2"><a href="../../modules/Template/Plugin.html">Plugin.pm</a></li> <li class="l2"><a href="../../modules/Template/Plugin/index.html">Plugin::*</a></li> <li class="l2"><a href="../../modules/Template/Plugins.html">Plugins.pm</a></li> <li class="l2"><a href="../../modules/Template/Provider.html">Provider.pm</a></li> <li class="l2"><a href="../../modules/Template/Service.html">Service.pm</a></li> <li class="l2"><a href="../../modules/Template/Stash.html">Stash.pm</a></li> <li class="l2"><a href="../../modules/Template/Stash/index.html">Stash::*</a></li> <li class="l2"><a href="../../modules/Template/Test.html">Test.pm</a></li> <li class="l2"><a href="../../modules/Template/VMethods.html">VMethods.pm</a></li> <li class="l2"><a href="../../modules/Template/View.html">View.pm</a></li> <li class="l0"><a href="../../tools/index.html">Tools</a></li> <li class="l0 last"><a href="../../tutorial/index.html">Tutorial</a></li> </ul> <div class="foot"></div> </div> </div> <div id="content"> <div class="section"> <div class="head"> <h1 id="contents" onclick="switch_section(this)" title="Click title to show/hide section content.">Contents</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <ul class="toc"> <li class=""><a href="#SYNOPSIS">SYNOPSIS</a></li> <li class=""><a href="#DESCRIPTION">DESCRIPTION</a></li> <li class=""><a href="#PUBLIC_METHODS">PUBLIC METHODS</a></li> <li class="sub"><a href="#method_new">new(\%params)</a></li> <li class="sub"><a href="#method_parse">parse($text)</a></li> <li class=""><a href="#CONFIGURATION_OPTIONS">CONFIGURATION OPTIONS</a></li> <li class="sub"><a href="#section_START_TAG_END_TAG">START_TAG, END_TAG</a></li> <li class="sub"><a href="#section_TAG_STYLE">TAG_STYLE</a></li> <li class="sub"><a href="#section_PRE_CHOMP_POST_CHOMP">PRE_CHOMP, POST_CHOMP</a></li> <li class="sub"><a href="#section_INTERPOLATE">INTERPOLATE</a></li> <li class="sub"><a href="#section_ANYCASE">ANYCASE</a></li> <li class="sub"><a href="#section_GRAMMAR">GRAMMAR</a></li> <li class="sub"><a href="#section_DEBUG">DEBUG</a></li> <li class=""><a href="#AUTHOR">AUTHOR</a></li> <li class=""><a href="#COPYRIGHT">COPYRIGHT</a></li> <li class=""><a href="#SEE_ALSO">SEE ALSO</a></li> </ul> </div> </div> <div class="pod"> <div class="section"> <div class="head"> <h1 id="SYNOPSIS" onclick="switch_section(this)" title="Click title to show/hide section content.">SYNOPSIS</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <pre>use Template::Parser; $parser = Template::Parser->new(\%config); $template = $parser->parse($text) || die $parser->error(), "\n";</pre> </div> </div> <div class="section"> <div class="head"> <h1 id="DESCRIPTION" onclick="switch_section(this)" title="Click title to show/hide section content.">DESCRIPTION</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <code>Template::Parser</code> module implements a LALR(1) parser and associated methods for parsing template documents into Perl code. </p> </div> </div> <div class="section"> <div class="head"> <h1 id="PUBLIC_METHODS" onclick="switch_section(this)" title="Click title to show/hide section content.">PUBLIC METHODS</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <div class="subsection"> <div class="head"> <h2 id="method_new" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">new(\%params)</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <code>new()</code> constructor creates and returns a reference to a new <code>Template::Parser</code> object. </p> <p> A reference to a hash may be supplied as a parameter to provide configuration values. See <a href="#CONFIGURATION_OPTIONS">CONFIGURATION OPTIONS</a> below for a summary of these options and <a href="../../manual/Config.html">Template::Manual::Config</a> for full details. </p> <pre>my $parser = Template::Parser->new({ START_TAG => quotemeta('<+'), END_TAG => quotemeta('+>'), });</pre> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_parse" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">parse($text)</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <code>parse()</code> 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 <a href="../../modules/Template/Document.html">Template::Document</a> <a href="../../modules/Template/Document.html#method_new">new()</a> constructor method. On error, undef is returned. </p> <pre>$data = $parser->parse($text) || die $parser->error();</pre> <p> The <code>$data</code> hash reference returned contains a <code>BLOCK</code> item containing the compiled Perl code for the template, a <code>DEFBLOCKS</code> item containing a reference to a hash array of sub-template <code>BLOCK</code>s defined within in the template, and a <code>METADATA</code> item containing a reference to a hash array of metadata values defined in <code>META</code> tags. </p> </div> </div> </div> </div> <div class="section"> <div class="head"> <h1 id="CONFIGURATION_OPTIONS" onclick="switch_section(this)" title="Click title to show/hide section content.">CONFIGURATION OPTIONS</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <code>Template::Parser</code> module accepts the following configuration options. Please see <a href="../../manual/Config.html">Template::Manual::Config</a> for futher details on each option. </p> <div class="subsection"> <div class="head"> <h2 id="section_START_TAG_END_TAG" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">START_TAG, END_TAG</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <a href="../../manual/Config.html#section_START_TAG_END_TAG">START_TAG</a> and <a href="../../manual/Config.html#section_START_TAG_END_TAG">END_TAG</a> options are used to specify character sequences or regular expressions that mark the start and end of a template directive. </p> <pre>my $parser = Template::Parser->new({ START_TAG => quotemeta('<+'), END_TAG => quotemeta('+>'), });</pre> </div> </div> <div class="subsection"> <div class="head"> <h2 id="section_TAG_STYLE" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">TAG_STYLE</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <a href="../../manual/Config.html#section_TAG_STYLE">TAG_STYLE</a> option can be used to set both <a href="#section_START_TAG">START_TAG</a> and <a href="#section_END_TAG">END_TAG</a> according to pre-defined tag styles. </p> <pre>my $parser = Template::Parser->new({ TAG_STYLE => 'star', # [* ... *] });</pre> </div> </div> <div class="subsection"> <div class="head"> <h2 id="section_PRE_CHOMP_POST_CHOMP" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">PRE_CHOMP, POST_CHOMP</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <a href="../../manual/Config.html#section_PRE_CHOMP_POST_CHOMP">PRE_CHOMP</a> and <a href="../../manual/Config.html#section_PRE_CHOMP_POST_CHOMP">POST_CHOMP</a> can be set to remove any whitespace before or after a directive tag, respectively. </p> <pre>my $parser = Template::Parser-E<gt>new({ PRE_CHOMP => 1, POST_CHOMP => 1, });</pre> </div> </div> <div class="subsection"> <div class="head"> <h2 id="section_INTERPOLATE" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">INTERPOLATE</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <a href="../../manual/Config.html#section_INTERPOLATE">INTERPOLATE</a> flag can be set to allow variables to be embedded in plain text blocks. </p> <pre>my $parser = Template::Parser->new({ INTERPOLATE => 1, });</pre> <p> Variables should be prefixed by a <code>$</code> to identify them, using curly braces to explicitly scope the variable name where necessary. </p> <pre>Hello ${name}, The day today is ${day.today}.</pre> </div> </div> <div class="subsection"> <div class="head"> <h2 id="section_ANYCASE" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">ANYCASE</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <a href="../../manual/Config.html#section_ANYCASE">ANYCASE</a> option can be set to allow directive keywords to be specified in any case. </p> <pre># with ANYCASE set to 1 [% INCLUDE foobar %] # OK [% include foobar %] # OK [% include = 10 %] # ERROR, 'include' is a reserved word</pre> </div> </div> <div class="subsection"> <div class="head"> <h2 id="section_GRAMMAR" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">GRAMMAR</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <a href="../../manual/Config.html#section_GRAMMAR">GRAMMAR</a> 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. </p> <pre>use MyOrg::Template::Grammar; my $parser = Template::Parser->new({ GRAMMAR = MyOrg::Template::Grammar->new(); });</pre> <p> By default, an instance of the default <a href="../../modules/Template/Grammar.html">Template::Grammar</a> will be created and used automatically if a <code>GRAMMAR</code> item isn't specified. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="section_DEBUG" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">DEBUG</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <a href="../../manual/Config.html#section_DEBUG">DEBUG</a> option can be used to enable various debugging features of the <code>Template::Parser</code> module. </p> <pre>use Template::Constants qw( :debug ); my $template = Template->new({ DEBUG => DEBUG_PARSER | DEBUG_DIRS, });</pre> </div> </div> </div> </div> <div class="section"> <div class="head"> <h1 id="AUTHOR" onclick="switch_section(this)" title="Click title to show/hide section content.">AUTHOR</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Andy Wardley <abw@wardley.org> <a href="http://wardley.org/">http://wardley.org/</a> </p> </div> </div> <div class="section"> <div class="head"> <h1 id="COPYRIGHT" onclick="switch_section(this)" title="Click title to show/hide section content.">COPYRIGHT</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved. </p> <p> This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. </p> <p> The main parsing loop of the <code>Template::Parser</code> module was derived from a standalone parser generated by version 0.16 of the <code>Parse::Yapp</code> module. The following copyright notice appears in the <code>Parse::Yapp</code> documentation. </p> <pre>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.</pre> </div> </div> <div class="section"> <div class="head"> <h1 id="SEE_ALSO" onclick="switch_section(this)" title="Click title to show/hide section content.">SEE ALSO</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> <a href="../../modules/Template.html">Template</a>, <a href="../../modules/Template/Grammar.html">Template::Grammar</a>, <a href="../../modules/Template/Directive.html">Template::Directive</a> </p> </div> </div> </div></div> <br class="clear" /> <div class="pageinfo"> /modules/Template/Parser.html last modified 10:54:56 31-May-2007 </div> </div> <div id="footer"> <a href="http://opensource.org/" class="osi"></a> <div class="controls"> <div class="pager"> <a href="../../modules/Template/Namespace/index.html" title="Template::Namespace::* Modules" class="go back">Back<span class="about"><h4>Template::Namespace::* Modules</h4></span></a> <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a> <a href="../../modules/Template/Plugin.html" title="Template::Plugin" class="go next">Next<span class="about"><h4>Template::Plugin</h4></span></a> </div> </div> <div class="copyright"> Copyright © 1996-2007 <a href="http://wardley.org/">Andy Wardley</a>. All Rights Reserved. </div> <div class="licence"> The <a href="http://template-toolkit.org/">Template Toolkit</a> is <a href="http://opensource.org/">Open Source</a> software. You can redistribute and/or modify it under the terms of the <a href="http://www.opensource.org/licenses/gpl-license.php">GNU Public Licence</a> or the <a href="http://www.opensource.org/licenses/artistic-license.php">Perl Artistic Licence</a>. </div> </div> <div id="palette"> <ul> <li class="first"><a href="#" class="blue" onclick="set_style('Clear Blue')"></a></li> <li><a href="#" class="orange" onclick="set_style('Clear Orange')"></a></li> <li><a href="#" class="green" onclick="set_style('Clear Green')"></a></li> <li><a href="#" class="purple" onclick="set_style('Clear Purple')"></a></li> <li><a href="#" class="grey" onclick="set_style('Clear Grey')"></a></li> </ul> </div> </div> </body> </html>