~ubuntu-branches/ubuntu/quantal/libtemplate-perl/quantal

« back to all changes in this revision

Viewing changes to html/old/modules/Template/Parser.html

  • Committer: Package Import Robot
  • Author(s): Benjamin Mako Hill
  • Date: 2012-04-08 19:06:29 UTC
  • mfrom: (0.7.1) (0.5.2) (5.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20120408190629-wbcbs2ea39mex6lt
Tags: 2.24-1
* New upstream release (Closes: #664561)
* Bump Standards-Version to 3.9.3
* Changed to the short description to mention the term "Template
  Toolkit". (LP: #688836)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
 
 
3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
 
4
<html>
 
5
  <head>
 
6
    <title>Template::Parser</title>
 
7
    <link rel="stylesheet" type="text/css" href="../../css/blue.css" title="Clear Blue">
 
8
    <link rel="alternate stylesheet" type="text/css" href="../../css/orange.css" title="Clear Orange">
 
9
    <link rel="alternate stylesheet" type="text/css" href="../../css/green.css" title="Clear Green">
 
10
    <link rel="alternate stylesheet" type="text/css" href="../../css/purple.css" title="Clear Purple">
 
11
    <link rel="alternate stylesheet" type="text/css" href="../../css/grey.css" title="Clear Grey">
 
12
    <!--[if IE 6]>
 
13
    <link rel="stylesheet" type="text/css" href="../../css/ie6.css" />
 
14
    <![endif]-->
 
15
    <link rel="stylesheet" type="text/css" href="/css/print.css" media="print">
 
16
    <script type="text/javascript" src="../../js/tt2.js"></script>
 
17
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 
18
    <meta name="author" content="Andy Wardley">
 
19
  </head>
 
20
  <body id="body"> 
 
21
    <div id="layout">
 
22
        <div id="header">
 
23
          <a href="../../index.html" id="logo" alt="" title="Click for the Home Page"><span class="alt">TT2 Home Page</span></a>
 
24
          <ul id="trail">
 
25
            <li><a href="../../modules/index.html">Modules</a></li>
 
26
            <li><a href="../../modules/Template/index.html">Template::*</a></li>
 
27
            <li class="last"><a href="../../modules/Template/Parser.html">Parser.pm</a></li>
 
28
          </ul>
 
29
          <div class="controls">
 
30
            <a href="#" class="menu show" onclick="widescreen_off(); return false" title="Show Menu">
 
31
              <span class="about">Click to view the menu.  It's very nice.</span>
 
32
            </a>
 
33
            <a href="#" class="menu hide" onclick="widescreen_on();  return false" title="Hide Menu">
 
34
              <span class="about">Click to hide the menu and go all widescreen!</span>
 
35
            </a>
 
36
          
 
37
          <div class="pager">
 
38
            <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>
 
39
            <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a>
 
40
            <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>
 
41
          </div>
 
42
          </div>
 
43
          <h1 class="headline">Template::Parser</h1>
 
44
          <h2 class="subhead">LALR(1) parser for compiling template documents</h1>
 
45
        
 
46
        </div>
 
47
        <div id="page">
 
48
          <div id="sidebar">
 
49
            <a href="../../index.html" id="logo"></a>
 
50
            <div id="menu">
 
51
              <ul class="menu">
 
52
                <li class="l0 first"><a href="../../manual/index.html">Manual</a></li>
 
53
                <li class="l0"><a href="../../modules/index.html" class="warm">Modules</a></li>
 
54
                <li class="l1"><a href="../../modules/Template.html">Template.pm</a></li>
 
55
                <li class="l1"><a href="../../modules/Template/index.html" class="warm">Template::*</a></li>
 
56
                <li class="l2"><a href="../../modules/Template/Base.html">Base.pm</a></li>
 
57
                <li class="l2"><a href="../../modules/Template/Config.html">Config.pm</a></li>
 
58
                <li class="l2"><a href="../../modules/Template/Constants.html">Constants.pm</a></li>
 
59
                <li class="l2"><a href="../../modules/Template/Context.html">Context.pm</a></li>
 
60
                <li class="l2"><a href="../../modules/Template/Directive.html">Directive.pm</a></li>
 
61
                <li class="l2"><a href="../../modules/Template/Document.html">Document.pm</a></li>
 
62
                <li class="l2"><a href="../../modules/Template/Exception.html">Exception.pm</a></li>
 
63
                <li class="l2"><a href="../../modules/Template/Filters.html">Filters.pm</a></li>
 
64
                <li class="l2"><a href="../../modules/Template/Grammar.html">Grammar.pm</a></li>
 
65
                <li class="l2"><a href="../../modules/Template/Iterator.html">Iterator.pm</a></li>
 
66
                <li class="l2"><a href="../../modules/Template/Namespace/index.html">Namespace::*</a></li>
 
67
                <li class="l2"><a href="../../modules/Template/Parser.html" class="warm">Parser.pm</a></li>
 
68
                <li class="l2"><a href="../../modules/Template/Plugin.html">Plugin.pm</a></li>
 
69
                <li class="l2"><a href="../../modules/Template/Plugin/index.html">Plugin::*</a></li>
 
70
                <li class="l2"><a href="../../modules/Template/Plugins.html">Plugins.pm</a></li>
 
71
                <li class="l2"><a href="../../modules/Template/Provider.html">Provider.pm</a></li>
 
72
                <li class="l2"><a href="../../modules/Template/Service.html">Service.pm</a></li>
 
73
                <li class="l2"><a href="../../modules/Template/Stash.html">Stash.pm</a></li>
 
74
                <li class="l2"><a href="../../modules/Template/Stash/index.html">Stash::*</a></li>
 
75
                <li class="l2"><a href="../../modules/Template/Test.html">Test.pm</a></li>
 
76
                <li class="l2"><a href="../../modules/Template/VMethods.html">VMethods.pm</a></li>
 
77
                <li class="l2"><a href="../../modules/Template/View.html">View.pm</a></li>
 
78
                <li class="l0"><a href="../../tools/index.html">Tools</a></li>
 
79
                <li class="l0 last"><a href="../../tutorial/index.html">Tutorial</a></li>
 
80
              </ul>
 
81
              <div class="foot"></div>
 
82
            </div>
 
83
          </div>
 
84
          <div id="content">
 
85
          <div class="section">
 
86
            <div class="head">
 
87
              <h1 id="contents" onclick="switch_section(this)" title="Click title to show/hide section content.">Contents</h1>
 
88
              <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
89
            </div>
 
90
            <div class="body">
 
91
              <ul class="toc">
 
92
                  <li class=""><a href="#SYNOPSIS">SYNOPSIS</a></li>
 
93
                  <li class=""><a href="#DESCRIPTION">DESCRIPTION</a></li>
 
94
                  <li class=""><a href="#PUBLIC_METHODS">PUBLIC METHODS</a></li>
 
95
                  <li class="sub"><a href="#method_new">new(\%params)</a></li>
 
96
                  <li class="sub"><a href="#method_parse">parse($text)</a></li>
 
97
                  <li class=""><a href="#CONFIGURATION_OPTIONS">CONFIGURATION OPTIONS</a></li>
 
98
                  <li class="sub"><a href="#section_START_TAG_END_TAG">START_TAG, END_TAG</a></li>
 
99
                  <li class="sub"><a href="#section_TAG_STYLE">TAG_STYLE</a></li>
 
100
                  <li class="sub"><a href="#section_PRE_CHOMP_POST_CHOMP">PRE_CHOMP, POST_CHOMP</a></li>
 
101
                  <li class="sub"><a href="#section_INTERPOLATE">INTERPOLATE</a></li>
 
102
                  <li class="sub"><a href="#section_ANYCASE">ANYCASE</a></li>
 
103
                  <li class="sub"><a href="#section_GRAMMAR">GRAMMAR</a></li>
 
104
                  <li class="sub"><a href="#section_DEBUG">DEBUG</a></li>
 
105
                  <li class=""><a href="#AUTHOR">AUTHOR</a></li>
 
106
                  <li class=""><a href="#COPYRIGHT">COPYRIGHT</a></li>
 
107
                  <li class=""><a href="#SEE_ALSO">SEE ALSO</a></li>
 
108
              
 
109
              </ul>
 
110
            </div>
 
111
          </div>
 
112
          
 
113
                <div class="pod">
 
114
            <div class="section">
 
115
              <div class="head">
 
116
                <h1 id="SYNOPSIS" onclick="switch_section(this)" title="Click title to show/hide section content.">SYNOPSIS</h1>
 
117
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
118
              </div>
 
119
              <div class="body">
 
120
                <pre>use Template::Parser;
 
121
 
 
122
$parser   = Template::Parser-&gt;new(\%config);
 
123
$template = $parser-&gt;parse($text)
 
124
    || die $parser-&gt;error(), "\n";</pre>
 
125
              </div>
 
126
            </div>
 
127
            <div class="section">
 
128
              <div class="head">
 
129
                <h1 id="DESCRIPTION" onclick="switch_section(this)" title="Click title to show/hide section content.">DESCRIPTION</h1>
 
130
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
131
              </div>
 
132
              <div class="body">
 
133
                <p>
 
134
                      The <code>Template::Parser</code> module implements a LALR(1) parser and
 
135
                      associated methods for parsing template documents into Perl code.
 
136
                    </p>
 
137
              </div>
 
138
            </div>
 
139
            <div class="section">
 
140
              <div class="head">
 
141
                <h1 id="PUBLIC_METHODS" onclick="switch_section(this)" title="Click title to show/hide section content.">PUBLIC METHODS</h1>
 
142
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
143
              </div>
 
144
              <div class="body">
 
145
                <div class="subsection">
 
146
                  <div class="head">
 
147
                    <h2 id="method_new" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">new(\%params)</h2>
 
148
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
149
                  </div>
 
150
                  <div class="body">
 
151
                    <p>
 
152
                          The <code>new()</code> constructor creates and returns a reference to a
 
153
                          new <code>Template::Parser</code> object.
 
154
                        </p>
 
155
                        <p>
 
156
                          A reference to a hash may be supplied as a parameter to provide
 
157
                          configuration values. See <a href="#CONFIGURATION_OPTIONS">CONFIGURATION
 
158
                          OPTIONS</a> below for a summary of these options and <a href="../../manual/Config.html">Template::Manual::Config</a>
 
159
                          for full details.
 
160
                        </p>
 
161
                        <pre>my $parser = Template::Parser-&gt;new({
 
162
    START_TAG =&gt; quotemeta('&lt;+'),
 
163
    END_TAG   =&gt; quotemeta('+&gt;'),
 
164
});</pre>
 
165
                  </div>
 
166
                </div>    <div class="subsection">
 
167
                  <div class="head">
 
168
                    <h2 id="method_parse" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">parse($text)</h2>
 
169
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
170
                  </div>
 
171
                  <div class="body">
 
172
                    <p>
 
173
                          The <code>parse()</code> method parses the text passed in the first
 
174
                          parameter and returns a reference to a hash array of data defining the
 
175
                          compiled representation of the template text, suitable for passing to the
 
176
                          <a href="../../modules/Template/Document.html">Template::Document</a>
 
177
                          <a href="../../modules/Template/Document.html#method_new">new()</a>
 
178
                          constructor method. On error, undef is returned.
 
179
                        </p>
 
180
                        <pre>$data = $parser-&gt;parse($text)
 
181
    || die $parser-&gt;error();</pre>
 
182
                        <p>
 
183
                          The <code>$data</code> hash reference returned contains a
 
184
                          <code>BLOCK</code> item containing the compiled Perl code for the
 
185
                          template, a <code>DEFBLOCKS</code> item containing a reference to a hash
 
186
                          array of sub-template <code>BLOCK</code>s defined within in the template,
 
187
                          and a <code>METADATA</code> item containing a reference to a hash array
 
188
                          of metadata values defined in <code>META</code> tags.
 
189
                        </p>
 
190
                  </div>
 
191
                </div>
 
192
              </div>
 
193
            </div>
 
194
            <div class="section">
 
195
              <div class="head">
 
196
                <h1 id="CONFIGURATION_OPTIONS" onclick="switch_section(this)" title="Click title to show/hide section content.">CONFIGURATION OPTIONS</h1>
 
197
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
198
              </div>
 
199
              <div class="body">
 
200
                <p>
 
201
                      The <code>Template::Parser</code> module accepts the following
 
202
                      configuration options. Please see <a href="../../manual/Config.html">Template::Manual::Config</a>
 
203
                      for futher details on each option.
 
204
                    </p>
 
205
                    <div class="subsection">
 
206
                  <div class="head">
 
207
                    <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>
 
208
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
209
                  </div>
 
210
                  <div class="body">
 
211
                    <p>
 
212
                          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
 
213
                          character sequences or regular expressions that mark the start and end of
 
214
                          a template directive.
 
215
                        </p>
 
216
                        <pre>my $parser = Template::Parser-&gt;new({ 
 
217
    START_TAG =&gt; quotemeta('&lt;+'),
 
218
    END_TAG   =&gt; quotemeta('+&gt;'),
 
219
});</pre>
 
220
                  </div>
 
221
                </div>    <div class="subsection">
 
222
                  <div class="head">
 
223
                    <h2 id="section_TAG_STYLE" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">TAG_STYLE</h2>
 
224
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
225
                  </div>
 
226
                  <div class="body">
 
227
                    <p>
 
228
                          The <a href="../../manual/Config.html#section_TAG_STYLE">TAG_STYLE</a> option can be used to set both <a
 
229
                          href="#section_START_TAG">START_TAG</a> and <a
 
230
                          href="#section_END_TAG">END_TAG</a> according to pre-defined tag styles.
 
231
                        </p>
 
232
                        <pre>my $parser = Template::Parser-&gt;new({ 
 
233
    TAG_STYLE =&gt; 'star',     # [* ... *]
 
234
});</pre>
 
235
                  </div>
 
236
                </div>    <div class="subsection">
 
237
                  <div class="head">
 
238
                    <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>
 
239
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
240
                  </div>
 
241
                  <div class="body">
 
242
                    <p>
 
243
                          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
 
244
                          whitespace before or after a directive tag, respectively.
 
245
                        </p>
 
246
                        <pre>my $parser = Template::Parser-E&lt;gt&gt;new({
 
247
    PRE_CHOMP  =&gt; 1,
 
248
    POST_CHOMP =&gt; 1,
 
249
});</pre>
 
250
                  </div>
 
251
                </div>    <div class="subsection">
 
252
                  <div class="head">
 
253
                    <h2 id="section_INTERPOLATE" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">INTERPOLATE</h2>
 
254
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
255
                  </div>
 
256
                  <div class="body">
 
257
                    <p>
 
258
                          The <a href="../../manual/Config.html#section_INTERPOLATE">INTERPOLATE</a> flag can be set to allow
 
259
                          variables to be embedded in plain text blocks.
 
260
                        </p>
 
261
                        <pre>my $parser = Template::Parser-&gt;new({ 
 
262
    INTERPOLATE =&gt; 1,
 
263
});</pre>
 
264
                        <p>
 
265
                          Variables should be prefixed by a <code>$</code> to identify them, using
 
266
                          curly braces to explicitly scope the variable name where necessary.
 
267
                        </p>
 
268
                        <pre>Hello ${name},
 
269
 
 
270
The day today is ${day.today}.</pre>
 
271
                  </div>
 
272
                </div>    <div class="subsection">
 
273
                  <div class="head">
 
274
                    <h2 id="section_ANYCASE" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">ANYCASE</h2>
 
275
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
276
                  </div>
 
277
                  <div class="body">
 
278
                    <p>
 
279
                          The <a href="../../manual/Config.html#section_ANYCASE">ANYCASE</a> option can be set to allow directive
 
280
                          keywords to be specified in any case.
 
281
                        </p>
 
282
                        <pre># with ANYCASE set to 1
 
283
[% INCLUDE foobar %]    # OK
 
284
[% include foobar %]    # OK
 
285
[% include = 10   %]    # ERROR, 'include' is a reserved word</pre>
 
286
                  </div>
 
287
                </div>    <div class="subsection">
 
288
                  <div class="head">
 
289
                    <h2 id="section_GRAMMAR" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">GRAMMAR</h2>
 
290
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
291
                  </div>
 
292
                  <div class="body">
 
293
                    <p>
 
294
                          The <a href="../../manual/Config.html#section_GRAMMAR">GRAMMAR</a> configuration item can be used to
 
295
                          specify an alternate grammar for the parser. This allows a modified or
 
296
                          entirely new template language to be constructed and used by the Template
 
297
                          Toolkit.
 
298
                        </p>
 
299
                        <pre>use MyOrg::Template::Grammar;
 
300
 
 
301
my $parser = Template::Parser-&gt;new({ 
 
302
    GRAMMAR = MyOrg::Template::Grammar-&gt;new();
 
303
});</pre>
 
304
                        <p>
 
305
                          By default, an instance of the default <a href="../../modules/Template/Grammar.html">Template::Grammar</a> will be created
 
306
                          and used automatically if a <code>GRAMMAR</code> item isn't specified.
 
307
                        </p>
 
308
                  </div>
 
309
                </div>    <div class="subsection">
 
310
                  <div class="head">
 
311
                    <h2 id="section_DEBUG" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">DEBUG</h2>
 
312
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
313
                  </div>
 
314
                  <div class="body">
 
315
                    <p>
 
316
                          The <a href="../../manual/Config.html#section_DEBUG">DEBUG</a> option can be used to enable various
 
317
                          debugging features of the <code>Template::Parser</code> module.
 
318
                        </p>
 
319
                        <pre>use Template::Constants qw( :debug );
 
320
 
 
321
my $template = Template-&gt;new({
 
322
    DEBUG =&gt; DEBUG_PARSER | DEBUG_DIRS,
 
323
});</pre>
 
324
                  </div>
 
325
                </div>
 
326
              </div>
 
327
            </div>
 
328
            <div class="section">
 
329
              <div class="head">
 
330
                <h1 id="AUTHOR" onclick="switch_section(this)" title="Click title to show/hide section content.">AUTHOR</h1>
 
331
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
332
              </div>
 
333
              <div class="body">
 
334
                <p>
 
335
                      Andy Wardley &lt;abw@wardley.org&gt; <a
 
336
                      href="http://wardley.org/">http://wardley.org/</a>
 
337
                    </p>
 
338
              </div>
 
339
            </div>
 
340
            <div class="section">
 
341
              <div class="head">
 
342
                <h1 id="COPYRIGHT" onclick="switch_section(this)" title="Click title to show/hide section content.">COPYRIGHT</h1>
 
343
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
344
              </div>
 
345
              <div class="body">
 
346
                <p>
 
347
                      Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved.
 
348
                    </p>
 
349
                    <p>
 
350
                      This module is free software; you can redistribute it and/or modify it
 
351
                      under the same terms as Perl itself.
 
352
                    </p>
 
353
                    <p>
 
354
                      The main parsing loop of the <code>Template::Parser</code> module was
 
355
                      derived from a standalone parser generated by version 0.16 of the
 
356
                      <code>Parse::Yapp</code> module. The following copyright notice appears
 
357
                      in the <code>Parse::Yapp</code> documentation.
 
358
                    </p>
 
359
                    <pre>The Parse::Yapp module and its related modules and shell
 
360
scripts are copyright (c) 1998 Francois Desarmenien,
 
361
France. All rights reserved.
 
362
 
 
363
You may use and distribute them under the terms of either
 
364
the GNU General Public License or the Artistic License, as
 
365
specified in the Perl README file.</pre>
 
366
              </div>
 
367
            </div>
 
368
            <div class="section">
 
369
              <div class="head">
 
370
                <h1 id="SEE_ALSO" onclick="switch_section(this)" title="Click title to show/hide section content.">SEE ALSO</h1>
 
371
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
 
372
              </div>
 
373
              <div class="body">
 
374
                <p>
 
375
                      <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>
 
376
                    </p>
 
377
              </div>
 
378
            </div>
 
379
            
 
380
            </div></div>
 
381
          <br class="clear" />
 
382
          <div class="pageinfo">
 
383
            /modules/Template/Parser.html last modified 10:54:56 31-May-2007
 
384
          </div>
 
385
        </div>
 
386
        
 
387
        <div id="footer">
 
388
          <a href="http://opensource.org/" class="osi"></a>
 
389
          <div class="controls">
 
390
          <div class="pager">
 
391
            <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>
 
392
            <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a>
 
393
            <a href="../../modules/Template/Plugin.html" title="Template::Plugin" class="go next">Next<span class="about"><h4>Template::Plugin</h4></span></a>
 
394
          </div>
 
395
          </div>
 
396
          <div class="copyright">
 
397
            Copyright &copy; 1996-2007 <a href="http://wardley.org/">Andy Wardley</a>.  All Rights Reserved.
 
398
          </div>
 
399
          <div class="licence">
 
400
            The <a href="http://template-toolkit.org/">Template Toolkit</a> is <a href="http://opensource.org/">Open Source</a> software.
 
401
            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>
 
402
            or the <a href="http://www.opensource.org/licenses/artistic-license.php">Perl Artistic Licence</a>.
 
403
          </div>
 
404
        </div>
 
405
        <div id="palette">
 
406
          <ul>
 
407
            <li class="first"><a href="#" class="blue" onclick="set_style('Clear Blue')"></a></li>
 
408
            <li><a href="#" class="orange" onclick="set_style('Clear Orange')"></a></li>
 
409
            <li><a href="#" class="green" onclick="set_style('Clear Green')"></a></li>
 
410
            <li><a href="#" class="purple" onclick="set_style('Clear Purple')"></a></li>
 
411
            <li><a href="#" class="grey" onclick="set_style('Clear Grey')"></a></li>
 
412
          </ul>
 
413
        </div>
 
414
    </div>  </body>
 
415
</html>