Second pass at adding key files
This commit is contained in:
550
site/glist/templates/help/GT/Template.html
Normal file
550
site/glist/templates/help/GT/Template.html
Normal file
@ -0,0 +1,550 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>GT::Template - Gossamer Threads template parser</title>
|
||||
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
|
||||
|
||||
<style type="text/css">
|
||||
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
|
||||
/* $MVD$:fontset("Arial","Arial") */
|
||||
/* $MVD$:fontset("Arial Black","Arial Black") */
|
||||
/* $MVD$:fontset("Algerian","Algerian") */
|
||||
|
||||
|
||||
body {
|
||||
background-color: white;
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: small;
|
||||
color: black;
|
||||
}
|
||||
|
||||
|
||||
p {
|
||||
background-color : white;
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
h1 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-weight : bold;
|
||||
font-size : medium;
|
||||
background-color : white;
|
||||
color : maroon;
|
||||
}
|
||||
|
||||
|
||||
h2 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : medium;
|
||||
font-weight : bold;
|
||||
color : blue;
|
||||
background-color : white;
|
||||
}
|
||||
|
||||
|
||||
h3 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-weight : bold;
|
||||
font-size : medium;
|
||||
color : black;
|
||||
background-color : white;
|
||||
}
|
||||
|
||||
|
||||
h4 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-weight : bold;
|
||||
font-size : small;
|
||||
color : maroon;
|
||||
background-color : white;
|
||||
}
|
||||
|
||||
|
||||
h5 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-weight : bold;
|
||||
font-size : small;
|
||||
color : blue;
|
||||
background-color : white;
|
||||
}
|
||||
|
||||
|
||||
h6 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-weight : bold;
|
||||
font-size : small;
|
||||
color : black;
|
||||
background-color : white;
|
||||
}
|
||||
|
||||
|
||||
ul {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
ol {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
dl {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
li {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
th {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
td {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
dl {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
dd {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
dt {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
code {
|
||||
font-family : Courier;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
|
||||
pre {
|
||||
font-family : Courier;
|
||||
font-size : small;
|
||||
color : black;
|
||||
}
|
||||
|
||||
.mvd-H1 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-weight : bold;
|
||||
font-size : 14.0pt;
|
||||
background-color : transparent;
|
||||
background-image : none;
|
||||
color : maroon;
|
||||
}
|
||||
|
||||
|
||||
.mvd-H2 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : 12.0pt;
|
||||
color : blue;
|
||||
}
|
||||
|
||||
|
||||
p.indent {
|
||||
font-family : "Verdana, Arial, sans-serif";
|
||||
list-style-type : circle;
|
||||
list-style-position : inside;
|
||||
color : black;
|
||||
margin-left : 16.0pt;
|
||||
}
|
||||
|
||||
|
||||
.mvd-P-indent {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
list-style-type : circle;
|
||||
list-style-position : inside;
|
||||
color : black;
|
||||
margin-left : 16.0pt;
|
||||
}
|
||||
|
||||
|
||||
pre.programlisting {
|
||||
font-size : 9.0pt;
|
||||
list-style-type : disc;
|
||||
margin-left : 16.0pt;
|
||||
margin-top : -14.0pt;
|
||||
}
|
||||
|
||||
|
||||
.mvd-PRE-programlisting {
|
||||
font-size : 9.0pt;
|
||||
list-style-type : disc;
|
||||
margin-left : 16.0pt;
|
||||
margin-top : -14.0pt;
|
||||
}
|
||||
|
||||
|
||||
.mvd-PRE {
|
||||
font-size : 9.0pt;
|
||||
}
|
||||
|
||||
|
||||
p.note {
|
||||
margin-left : 28.0pt;
|
||||
}
|
||||
|
||||
|
||||
.mvd-P-note {
|
||||
margin-left : 28.0pt;
|
||||
}
|
||||
|
||||
|
||||
.mvd-H4 {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-weight : normal;
|
||||
font-size : 9.0pt;
|
||||
color : black;
|
||||
margin-left : 6.0pt;
|
||||
margin-top : -14.0pt;
|
||||
}
|
||||
|
||||
|
||||
.mvd-P {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
font-size : 10.0pt;
|
||||
color : black;
|
||||
}
|
||||
|
||||
.mvd-BODY {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
background-color : white;
|
||||
}
|
||||
|
||||
|
||||
p.indentnobullet {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
list-style-type : none;
|
||||
}
|
||||
|
||||
|
||||
.mvd-P-indentnobullet {
|
||||
font-family : Verdana, Arial, sans-serif;
|
||||
list-style-type : none;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body style="background-color: white">
|
||||
|
||||
<p><a name="__index__"></a></p>
|
||||
<!-- INDEX BEGIN -->
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="#name">NAME</a></li>
|
||||
<li><a href="#synopsis">SYNOPSIS</a></li>
|
||||
<li><a href="#description">DESCRIPTION</a></li>
|
||||
<ul>
|
||||
|
||||
<li><a href="#template_syntax">Template Syntax</a></li>
|
||||
<li><a href="#parse">parse</a></li>
|
||||
<li><a href="#parse_print">parse_print</a></li>
|
||||
<li><a href="#parse_stream">parse_stream</a></li>
|
||||
<li><a href="#parse_options">Parse Options</a></li>
|
||||
<ul>
|
||||
|
||||
<li><a href="#filename">Filename</a></li>
|
||||
<li><a href="#variables">Variables</a></li>
|
||||
<li><a href="#options">Options</a></li>
|
||||
<li><a href="#aliases">Aliases</a></li>
|
||||
</ul>
|
||||
|
||||
<li><a href="#vars">vars</a></li>
|
||||
</ul>
|
||||
|
||||
<li><a href="#examples">EXAMPLES</a></li>
|
||||
<li><a href="#see_also">SEE ALSO</a></li>
|
||||
<li><a href="#copyright">COPYRIGHT</a></li>
|
||||
<li><a href="#version">VERSION</a></li>
|
||||
</ul>
|
||||
<!-- INDEX END -->
|
||||
|
||||
<hr />
|
||||
<p>
|
||||
</p>
|
||||
<h1><a name="name">NAME</a></h1>
|
||||
<p>GT::Template - Gossamer Threads template parser</p>
|
||||
<p>
|
||||
</p>
|
||||
<hr />
|
||||
<h1><a name="synopsis">SYNOPSIS</a></h1>
|
||||
<pre>
|
||||
use GT::Template;
|
||||
my $var = GT::Template->parse('file.txt', { key => 'value' });
|
||||
...
|
||||
print $var;</pre>
|
||||
<p>or</p>
|
||||
<pre>
|
||||
use GT::Template;
|
||||
GT::Template->parse_print('file.txt', { key => 'value' });</pre>
|
||||
<p>or</p>
|
||||
<pre>
|
||||
use GT::Template;
|
||||
GT::Template->parse_stream('file.txt', { key => 'value' });</pre>
|
||||
<p>
|
||||
</p>
|
||||
<hr />
|
||||
<h1><a name="description">DESCRIPTION</a></h1>
|
||||
<p>GT::Template provides a simple way (one line) to parse a template (which
|
||||
can be either a file or a string) and make sophisticated replacements.</p>
|
||||
<p>It supports simple replacements, conditionals, function calls, including other
|
||||
templates, and more.</p>
|
||||
<p>Additionally, through using pre-compiled files, subsequent parses of a template
|
||||
will be very fast.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h2><a name="template_syntax">Template Syntax</a></h2>
|
||||
<p>The template syntax documentation has moved - it is now documented in
|
||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template/Tutorial.html">the GT::Template::Tutorial manpage</a>.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h2><a name="parse">parse</a></h2>
|
||||
<p>This option parses a template, and returns the value of the parsed template.
|
||||
See <a href="#parse_options">Parse Options</a> for a description of the possible parse parameters.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h2><a name="parse_print">parse_print</a></h2>
|
||||
<p>This option parses a template, and prints it. See <a href="#parse_options">Parse Options</a> for a
|
||||
description of the possible parse_print parameters.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h2><a name="parse_stream">parse_stream</a></h2>
|
||||
<p>This option parses a template, and prints each part of it as the parse occurs.
|
||||
It should only be used in situations where streaming content is required as it
|
||||
is measurably slower than the parse_print alternative. See <a href="#parse_options">Parse Options</a>
|
||||
for a description of the possible parse_stream parameters.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h2><a name="parse_options">Parse Options</a></h2>
|
||||
<p>
|
||||
</p>
|
||||
<h3><a name="filename">Filename</a></h3>
|
||||
<p>The first argument to <code>parse()/parse_print()/parse_stream()</code> (hereafter referred
|
||||
to simply as <code>parse())</code> is the full or relative (to the current working
|
||||
directory) path to the file to parse.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h3><a name="variables">Variables</a></h3>
|
||||
<p>The second argument is a hash reference of template variables that will be
|
||||
available in the parsed template (see <a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template/Tutorial.html">the GT::Template::Tutorial manpage</a>). Arbitrary
|
||||
hash/array data structure access is supported (see
|
||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template/Tutorial.html#advanced_variables_using_references">Advanced variables using references in the GT::Template::Tutorial manpage</a>).</p>
|
||||
<p>Loops are supported by providing an array reference or code reference as a
|
||||
value; array reference loops are generally preferred as they enable the loop to
|
||||
be used multiple times and support the <%loopvar.length%> syntax.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h3><a name="options">Options</a></h3>
|
||||
<p>The third argument (which is not required) takes additional options that change
|
||||
the way a parse is performed. The available options (there are more, however
|
||||
their use is discouraged) are as follows.</p>
|
||||
<ul>
|
||||
<li><strong><a name="item_string__3d_3e__24template">string => $template</a></strong><br />
|
||||
</li>
|
||||
Passing in <a href="#item_string__3d_3e__24template"><code>string => $template</code></a> will use $template as for the template
|
||||
content instead of reading the file specified as the first <code>parse()</code> argument.
|
||||
If provided, the first argument to <code>parse()</code> (the filename) is ignored.
|
||||
<p></p>
|
||||
<li><strong><a name="item_compress__3d_3e_1">compress => 1</a></strong><br />
|
||||
</li>
|
||||
Setting compress => 1 will compress all white space generated by the program.
|
||||
This is usually acceptable for HTML, reducing page sizes by typically 10-20%,
|
||||
but should not be used for non-HTML templates. The default is 0 (no
|
||||
compression). This option has no effect when using parse_stream().
|
||||
<p></p>
|
||||
<li><strong><a name="item_strict__3d_3e_0">strict => 0</a></strong><br />
|
||||
</li>
|
||||
If set to 1, attempting to use a tag that does not exist will display an
|
||||
``Unknown tag 'tagname''' error. If strict is set to 0, using an unset tag will
|
||||
not display anything.
|
||||
<p></p>
|
||||
<li><strong><a name="item_escape__3d_3e_1">escape => 1</a></strong><br />
|
||||
</li>
|
||||
If enabled, this option will cause all variables to be HTML escaped before
|
||||
being included on a page. Enabling this option is strongly recommended.
|
||||
all variables before they are printed. Tag values that should not be escaped
|
||||
should be passed as scalar references (\$foo or \'<html>').
|
||||
<p>This option currently defaults to 0, but may eventually change to 1 - so
|
||||
passing an explicit 1 or 0 value is strongly recommended.</p>
|
||||
<p></p>
|
||||
<li><strong><a name="item_disable__3d_3e__7b__2e_2e_2e__7d">disable => { ... }</a></strong><br />
|
||||
</li>
|
||||
This can be used to disable certain GT::Template functionality. To disable a
|
||||
particular feature, the hash reference passed to disable should contain a
|
||||
<code>feature_name</code> with a <code>1</code> value, unless otherwise indicated. Feature names
|
||||
are as follows:
|
||||
<ul>
|
||||
<li><strong><a name="item_functions">functions</a></strong><br />
|
||||
</li>
|
||||
This can be used to disable Package::function calls, such as
|
||||
<code><%Some::Package::function%></code>. Note, however, that this does _not_
|
||||
disable aliased function calls (see below).
|
||||
<p></p>
|
||||
<li><strong><a name="item_function_args">function_args</a></strong><br />
|
||||
</li>
|
||||
This disables any function calls that specify arguments - for instance,
|
||||
<code><%Some::Package::function(1)></code>. Note that this does _not_ disable
|
||||
passing arguments to aliased function calls (see below).
|
||||
<p></p>
|
||||
<li><strong><a name="item_function_restrict">function_restrict</a></strong><br />
|
||||
</li>
|
||||
This can be used to restrict function calls by limiting the available
|
||||
functions. It takes a regular expression as an argument, which will be tested
|
||||
against the fully qualified function name - any function that does not match
|
||||
the regular expression will not be called. For example, to only allow
|
||||
functions in 'Package::One' and 'Second::Package' to be called, you could use:
|
||||
<pre>
|
||||
function_restrict => '^(?:Package::One|Second::Package)::\w+$'</pre>
|
||||
<p>Like the above options, this does not restrict aliased function calls.</p>
|
||||
<p></p>
|
||||
<li><strong><a name="item_coderefs_args">coderefs_args</a></strong><br />
|
||||
</li>
|
||||
This can be specified to disable the calling of code reference variables with
|
||||
arguments. Tags such as <code><%coderefname%></code> and
|
||||
<code><%coderefname()%></code> will be allowed, but <code><%coderefname(1)%></code>
|
||||
will not.
|
||||
<p></p>
|
||||
<li><strong><a name="item_alias_args">alias_args</a></strong><br />
|
||||
</li>
|
||||
This option can be used to disable the passing of arguments to aliased function
|
||||
calls (see below).
|
||||
<p></p></ul>
|
||||
<li><strong><a name="item_pkg_chop">pkg_chop</a></strong><br />
|
||||
</li>
|
||||
When calling a function such as <%Package::A::B::function%>, GT::Template will
|
||||
first attempt to load Package/A/B.pm, then, if it fails, Package/A.pm, and so
|
||||
on down to Package.pm, looking for Package::A::B::function in each file. This
|
||||
behaviour is slow and often undesirable - it is recommended to properly split
|
||||
up packages (that is, putting Package::A::B inside Package/A/B.pm instead of
|
||||
Package/A.pm or Package.pm). The ``package chopping'' occurs if pkg_chop is set
|
||||
to 1 (currently the default, but may change), and does not occur if pkg_chop is
|
||||
set to 0 (recommended, but not the default for historic reasons).
|
||||
<p></p>
|
||||
<li><strong><a name="item_heap">heap</a></strong><br />
|
||||
</li>
|
||||
If this is set, it will be added to the end of any other arguments passed to
|
||||
functions called.
|
||||
<p></p>
|
||||
<li><strong><a name="item_func_code">func_code</a></strong><br />
|
||||
</li>
|
||||
When calling a function such as <%Package::function%>, you can override the
|
||||
default behaviour of simply calling the function by providing a code reference
|
||||
to <a href="#item_func_code"><code>func_code</code></a>. Instead of calling Package::function(), your code reference
|
||||
will be called with the string of the package to call (e.g.
|
||||
'Package::function') and the arguments that would have been passed to the
|
||||
function. The return value of your code will be used as if it was the return
|
||||
value from the real function.
|
||||
<p></p>
|
||||
<li><strong><a name="item_begin">begin</a></strong><br />
|
||||
</li>
|
||||
<li><strong><a name="item_end">end</a></strong><br />
|
||||
</li>
|
||||
<a href="#item_begin"><code>begin</code></a> and <a href="#item_end"><code>end</code></a> can be used to change the characters that start and end a
|
||||
template tag. These default to <code><%</code> for <a href="#item_begin"><code>begin</code></a>, and <code>%></code> for
|
||||
<a href="#item_end"><code>end</code></a>. For example, if you changed <a href="#item_begin"><code>begin</code></a> to <code>[*</code> and <a href="#item_end"><code>end</code></a> to <code>*]</code>, you
|
||||
would use <code>[*tagname*]</code> for a normal tag, <code>[*-- comment --*]</code> for a comment,
|
||||
etc.
|
||||
<p></p></ul>
|
||||
<p>
|
||||
</p>
|
||||
<h3><a name="aliases">Aliases</a></h3>
|
||||
<p>The forth option to parse is an optional hash of aliases to set up for
|
||||
functions. The key should be the alias name and the value should be the
|
||||
function to call when the alias is invoked. For example:</p>
|
||||
<pre>
|
||||
print GT::Template->parse(
|
||||
'file.htm',
|
||||
{ key => 'value' },
|
||||
{ compress => 1 },
|
||||
{ myfunc => 'Long::Package::Name::To::myfunc' }
|
||||
);</pre>
|
||||
<p>Now in your template you can do:</p>
|
||||
<pre>
|
||||
<%myfunc('argument')%></pre>
|
||||
<p>Which will call <code>Long::Package::Name::To::myfunc</code>.</p>
|
||||
<p>
|
||||
</p>
|
||||
<h2><a name="vars">vars</a></h2>
|
||||
<p>Accessing variables from outside a template can be done by calling the
|
||||
<code>GT::Template->vars</code> method. For further details, please see
|
||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template/Vars.html">the GT::Template::Vars manpage</a>.</p>
|
||||
<p>
|
||||
</p>
|
||||
<hr />
|
||||
<h1><a name="examples">EXAMPLES</a></h1>
|
||||
<p>Parse the string contained in $template, making the 'key' tag available.</p>
|
||||
<pre>
|
||||
my $parsed = GT::Template->parse(undef, { key => 'value' }, { string => $template });</pre>
|
||||
<p>Parse file.txt, compress the result, and print it. This is equivelant to
|
||||
<code>print GT::Template->parse(...)</code>, but slightly faster.</p>
|
||||
<pre>
|
||||
GT::Template->parse_print('file.txt', { key => 'value' }, { compress => 1 });</pre>
|
||||
<p>Print the output of the template it as it is parsed, not after entirely parsed.
|
||||
This will output the same as the above command would without the ``compress''
|
||||
option, but is slower (unless, of course, streaming is needed).</p>
|
||||
<pre>
|
||||
GT::Template->parse_stream('file.txt', { key => 'value' });</pre>
|
||||
<p>Don't display warnings on invalid keys:</p>
|
||||
<pre>
|
||||
GT::Template->parse_print('file.txt', { key => 'value' }, { strict => 0 });</pre>
|
||||
<p>
|
||||
</p>
|
||||
<hr />
|
||||
<h1><a name="see_also">SEE ALSO</a></h1>
|
||||
<p><a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template/Tutorial.html">the GT::Template::Tutorial manpage</a> - Documentation/tutorial for GT::Template template
|
||||
tags.</p>
|
||||
<p><a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template/Vars.html">the GT::Template::Vars manpage</a> - Interface for accessing/manipulating template tags from
|
||||
Perl code.</p>
|
||||
<p><a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template/Inheritance.html">the GT::Template::Inheritance manpage</a> - Documentation for GT::Template template
|
||||
inheritance.</p>
|
||||
<p>
|
||||
</p>
|
||||
<hr />
|
||||
<h1><a name="copyright">COPYRIGHT</a></h1>
|
||||
<p>Copyright (c) 2005 Gossamer Threads Inc. All Rights Reserved.
|
||||
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
|
||||
<p>
|
||||
</p>
|
||||
<hr />
|
||||
<h1><a name="version">VERSION</a></h1>
|
||||
<p>Revision: $Id: Template.pm,v 2.142 2005/07/05 00:39:40 jagerman Exp $</p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user