File: reference.html

package info (click to toggle)
templayer 1.4-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 164 kB
  • ctags: 181
  • sloc: python: 964; makefile: 16
file content (246 lines) | stat: -rw-r--r-- 24,560 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
<html>
<head>
<title>Templayer 1.4 Reference</title>
<style type="text/css">
	h1 { text-align: center; }
	h2 { margin: 40px 0 0 0; padding: 10px;  background: #6d96e8;}
	h3 { margin: 0 0 3px 0; padding: 12px 6px 6px 6px; background: #efef96;}
	.l1 { margin: 12px 0 0 0; }
	.l2 { margin-left: 20px; }
</style>
<body>
<a name="top"></a>
<h1>Templayer 1.4 Reference</h1>

<div style="text-align: center;">
<a href="http://excess.org/templayer/">Templayer Home Page</a> /
<a href="tutorial.html">Tutorial</a> /
Reference
</div>
<br>
<table width="100%"><tr><td width="50%" valign="top"><div class="l1">Template classes</div><div class="l2"><a href="#Template">Template</a></div><div class="l2"><a href="#HTMLTemplate">HTMLTemplate</a></div><div class="l1">Layer classes</div><div class="l2"><a href="#FileLayer">FileLayer</a></div><div class="l2"><a href="#Layer">Layer</a></div><div class="l1">HTML Markup</div><div class="l2"><a href="#expand_html_markup">expand_html_markup</a></div><div class="l2"><a href="#RawHTML">RawHTML</a></div></td><td width="50%" valign="top"><div class="l1">Utility functions</div><div class="l2"><a href="#html_url_encode">html_url_encode</a></div><div class="l2"><a href="#html_href">html_href</a></div><div class="l2"><a href="#html_target">html_target</a></div><div class="l2"><a href="#html_escape">html_escape</a></div><div class="l2"><a href="#django_form">django_form</a></div></td></tr></table>
<br>
<h2>Template classes</h2><h3><a name="Template">class <strong>Template</strong></a> <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3>Methods defined here:<br>
<dl><dt><a name="Template-__init__"><strong>__init__</strong></a>(self, name, from_string<font color="#909090">=False</font>, auto_reload<font color="#909090">=None</font>, allow_degenerate<font color="#909090">=False</font>)</dt><dd><tt>name&nbsp;--&nbsp;template&nbsp;file&nbsp;name&nbsp;or&nbsp;file-like&nbsp;object<br>
from_string&nbsp;--&nbsp;if&nbsp;True&nbsp;treat&nbsp;name&nbsp;as&nbsp;a&nbsp;string&nbsp;containing&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;data&nbsp;instead&nbsp;of&nbsp;a&nbsp;file&nbsp;to&nbsp;read&nbsp;from<br>
auto_reload&nbsp;--&nbsp;if&nbsp;the&nbsp;template&nbsp;has&nbsp;not&nbsp;been&nbsp;checked&nbsp;in&nbsp;this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;many&nbsp;seconds&nbsp;then&nbsp;check&nbsp;it&nbsp;and&nbsp;reload&nbsp;if&nbsp;there<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;are&nbsp;any&nbsp;changes.&nbsp;&nbsp;If&nbsp;None&nbsp;only&nbsp;load&nbsp;the&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;file&nbsp;once.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checking&nbsp;and&nbsp;reloading&nbsp;is&nbsp;done&nbsp;by&nbsp;the&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_file()&nbsp;function.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ignored&nbsp;if&nbsp;from_string&nbsp;is&nbsp;True&nbsp;or&nbsp;if&nbsp;name&nbsp;is&nbsp;a&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file-like&nbsp;object.<br>
allow_degenerate&nbsp;--&nbsp;If&nbsp;True&nbsp;then&nbsp;template&nbsp;is&nbsp;allowed&nbsp;to&nbsp;not<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;have&nbsp;a&nbsp;{contents}...{/contents}&nbsp;block.&nbsp;&nbsp;In&nbsp;this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;the&nbsp;entire&nbsp;file&nbsp;is&nbsp;available&nbsp;as&nbsp;a&nbsp;layer<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;called&nbsp;'*'.&nbsp;&nbsp;eg.&nbsp;l&nbsp;=&nbsp;tmpl.format('*',&nbsp;...)</tt></dd></dl>

<dl><dt><a name="Template-finalize"><strong>finalize</strong></a>(self, value)</dt><dd><tt>Return&nbsp;unwrapped&nbsp;value&nbsp;as&nbsp;a&nbsp;string.<br>
&nbsp;<br>
Override&nbsp;this&nbsp;function&nbsp;to&nbsp;reverse&nbsp;wrapping&nbsp;applied&nbsp;before<br>
sending&nbsp;to&nbsp;the&nbsp;output&nbsp;file.</tt></dd></dl>

<dl><dt><a name="Template-format"><strong>format</strong></a>(self, layer_name, **args)</dt><dd><tt>Return&nbsp;a&nbsp;layer&nbsp;with&nbsp;slots&nbsp;filled&nbsp;by&nbsp;args.</tt></dd></dl>

<dl><dt><a name="Template-format_header_footer"><strong>format_header_footer</strong></a>(self, **args)</dt><dd><tt>Returns&nbsp;header&nbsp;and&nbsp;footer&nbsp;with&nbsp;slots&nbsp;filled&nbsp;by&nbsp;args.</tt></dd></dl>

<dl><dt><a name="Template-layer"><strong>layer</strong></a>(self, name)</dt><dd><tt>Return&nbsp;the&nbsp;complete&nbsp;layer&nbsp;named&nbsp;name&nbsp;as&nbsp;a&nbsp;string.</tt></dd></dl>

<dl><dt><a name="Template-layer_split"><strong>layer_split</strong></a>(self, name)</dt><dd><tt>Return&nbsp;the&nbsp;layer&nbsp;named&nbsp;name&nbsp;split&nbsp;on&nbsp;SLOT_MARKs.</tt></dd></dl>

<dl><dt><a name="Template-missing_slot"><strong>missing_slot</strong></a>(self, names, layer)</dt><dd><tt>Called&nbsp;when&nbsp;one&nbsp;or&nbsp;more&nbsp;slots&nbsp;are&nbsp;not&nbsp;found&nbsp;in&nbsp;a&nbsp;layer.</tt></dd></dl>

<dl><dt><a name="Template-post_process"><strong>post_process</strong></a>(self, value)</dt><dd><tt>Returns&nbsp;wrapped&nbsp;value.<br>
&nbsp;<br>
Override&nbsp;to&nbsp;wrap&nbsp;processed&nbsp;text&nbsp;in&nbsp;order&nbsp;to&nbsp;mark&nbsp;it&nbsp;as&nbsp;<br>
having&nbsp;been&nbsp;processed.</tt></dd></dl>

<dl><dt><a name="Template-pre_process"><strong>pre_process</strong></a>(self, key, value)</dt><dd><tt>Returns&nbsp;key,&nbsp;filtered/escaped&nbsp;value.<br>
&nbsp;<br>
Override&nbsp;this&nbsp;function&nbsp;to&nbsp;provide&nbsp;escaping&nbsp;or&nbsp;filtering&nbsp;of<br>
text&nbsp;sent&nbsp;from&nbsp;the&nbsp;module&nbsp;user.</tt></dd></dl>

<dl><dt><a name="Template-reload_template"><strong>reload_template</strong></a>(self)</dt><dd><tt>Reload&nbsp;the&nbsp;template&nbsp;data&nbsp;from&nbsp;the&nbsp;template&nbsp;file.</tt></dd></dl>

<dl><dt><a name="Template-set_template_data"><strong>set_template_data</strong></a>(self, tmpl)</dt><dd><tt>Parse&nbsp;and&nbsp;store&nbsp;the&nbsp;template&nbsp;data&nbsp;passed.</tt></dd></dl>

<dl><dt><a name="Template-start_file"><strong>start_file</strong></a>(self, file<font color="#909090">=None</font>)</dt><dd><tt>Return&nbsp;a&nbsp;FileLayer&nbsp;object&nbsp;that&nbsp;uses&nbsp;this&nbsp;template.<br>
&nbsp;<br>
file&nbsp;--&nbsp;file&nbsp;object&nbsp;or&nbsp;None&nbsp;to&nbsp;use&nbsp;sys.stdout.<br>
&nbsp;<br>
If&nbsp;self.<strong>auto_reload</strong>&nbsp;is&nbsp;not&nbsp;None&nbsp;this&nbsp;function&nbsp;will&nbsp;first&nbsp;<br>
check&nbsp;and&nbsp;reload&nbsp;the&nbsp;template&nbsp;file&nbsp;if&nbsp;it&nbsp;has&nbsp;changed.</tt></dd></dl>

<dl><dt><a name="Template-template_file_changed"><strong>template_file_changed</strong></a>(self)</dt><dd><tt>Return&nbsp;True&nbsp;if&nbsp;the&nbsp;template&nbsp;file&nbsp;has&nbsp;been&nbsp;modified&nbsp;since<br>
the&nbsp;last&nbsp;time&nbsp;it&nbsp;was&nbsp;loaded.</tt></dd></dl>

<h3><a name="HTMLTemplate">class <strong>HTMLTemplate</strong></a>(Template) <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3>Methods defined here:<br>
<dl><dt><a name="HTMLTemplate-finalize"><strong>finalize</strong></a>(self, value)</dt><dd><tt>Unwrap&nbsp;RawHTML&nbsp;object&nbsp;value&nbsp;for&nbsp;output.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-post_process"><strong>post_process</strong></a>(self, value)</dt><dd><tt>Wrap&nbsp;value&nbsp;in&nbsp;RawHTML&nbsp;object.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-pre_process"><strong>pre_process</strong></a>(self, key, value)</dt><dd><tt>Use&nbsp;expand_html_markup&nbsp;to&nbsp;process&nbsp;value.</tt></dd></dl>

<hr>
Methods inherited from Template:<br>
<dl><dt><a name="HTMLTemplate-__init__"><strong>__init__</strong></a>(self, name, from_string<font color="#909090">=False</font>, auto_reload<font color="#909090">=None</font>, allow_degenerate<font color="#909090">=False</font>)</dt><dd><tt>name&nbsp;--&nbsp;template&nbsp;file&nbsp;name&nbsp;or&nbsp;file-like&nbsp;object<br>
from_string&nbsp;--&nbsp;if&nbsp;True&nbsp;treat&nbsp;name&nbsp;as&nbsp;a&nbsp;string&nbsp;containing&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;data&nbsp;instead&nbsp;of&nbsp;a&nbsp;file&nbsp;to&nbsp;read&nbsp;from<br>
auto_reload&nbsp;--&nbsp;if&nbsp;the&nbsp;template&nbsp;has&nbsp;not&nbsp;been&nbsp;checked&nbsp;in&nbsp;this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;many&nbsp;seconds&nbsp;then&nbsp;check&nbsp;it&nbsp;and&nbsp;reload&nbsp;if&nbsp;there<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;are&nbsp;any&nbsp;changes.&nbsp;&nbsp;If&nbsp;None&nbsp;only&nbsp;load&nbsp;the&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;file&nbsp;once.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checking&nbsp;and&nbsp;reloading&nbsp;is&nbsp;done&nbsp;by&nbsp;the&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_file()&nbsp;function.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ignored&nbsp;if&nbsp;from_string&nbsp;is&nbsp;True&nbsp;or&nbsp;if&nbsp;name&nbsp;is&nbsp;a&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file-like&nbsp;object.<br>
allow_degenerate&nbsp;--&nbsp;If&nbsp;True&nbsp;then&nbsp;template&nbsp;is&nbsp;allowed&nbsp;to&nbsp;not<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;have&nbsp;a&nbsp;{contents}...{/contents}&nbsp;block.&nbsp;&nbsp;In&nbsp;this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;the&nbsp;entire&nbsp;file&nbsp;is&nbsp;available&nbsp;as&nbsp;a&nbsp;layer<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;called&nbsp;'*'.&nbsp;&nbsp;eg.&nbsp;l&nbsp;=&nbsp;tmpl.format('*',&nbsp;...)</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-format"><strong>format</strong></a>(self, layer_name, **args)</dt><dd><tt>Return&nbsp;a&nbsp;layer&nbsp;with&nbsp;slots&nbsp;filled&nbsp;by&nbsp;args.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-format_header_footer"><strong>format_header_footer</strong></a>(self, **args)</dt><dd><tt>Returns&nbsp;header&nbsp;and&nbsp;footer&nbsp;with&nbsp;slots&nbsp;filled&nbsp;by&nbsp;args.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-layer"><strong>layer</strong></a>(self, name)</dt><dd><tt>Return&nbsp;the&nbsp;complete&nbsp;layer&nbsp;named&nbsp;name&nbsp;as&nbsp;a&nbsp;string.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-layer_split"><strong>layer_split</strong></a>(self, name)</dt><dd><tt>Return&nbsp;the&nbsp;layer&nbsp;named&nbsp;name&nbsp;split&nbsp;on&nbsp;SLOT_MARKs.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-missing_slot"><strong>missing_slot</strong></a>(self, names, layer)</dt><dd><tt>Called&nbsp;when&nbsp;one&nbsp;or&nbsp;more&nbsp;slots&nbsp;are&nbsp;not&nbsp;found&nbsp;in&nbsp;a&nbsp;layer.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-reload_template"><strong>reload_template</strong></a>(self)</dt><dd><tt>Reload&nbsp;the&nbsp;template&nbsp;data&nbsp;from&nbsp;the&nbsp;template&nbsp;file.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-set_template_data"><strong>set_template_data</strong></a>(self, tmpl)</dt><dd><tt>Parse&nbsp;and&nbsp;store&nbsp;the&nbsp;template&nbsp;data&nbsp;passed.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-start_file"><strong>start_file</strong></a>(self, file<font color="#909090">=None</font>)</dt><dd><tt>Return&nbsp;a&nbsp;FileLayer&nbsp;object&nbsp;that&nbsp;uses&nbsp;this&nbsp;template.<br>
&nbsp;<br>
file&nbsp;--&nbsp;file&nbsp;object&nbsp;or&nbsp;None&nbsp;to&nbsp;use&nbsp;sys.stdout.<br>
&nbsp;<br>
If&nbsp;self.<strong>auto_reload</strong>&nbsp;is&nbsp;not&nbsp;None&nbsp;this&nbsp;function&nbsp;will&nbsp;first&nbsp;<br>
check&nbsp;and&nbsp;reload&nbsp;the&nbsp;template&nbsp;file&nbsp;if&nbsp;it&nbsp;has&nbsp;changed.</tt></dd></dl>

<dl><dt><a name="HTMLTemplate-template_file_changed"><strong>template_file_changed</strong></a>(self)</dt><dd><tt>Return&nbsp;True&nbsp;if&nbsp;the&nbsp;template&nbsp;file&nbsp;has&nbsp;been&nbsp;modified&nbsp;since<br>
the&nbsp;last&nbsp;time&nbsp;it&nbsp;was&nbsp;loaded.</tt></dd></dl>

<h2>Layer classes</h2><h3><a name="FileLayer">class <strong>FileLayer</strong></a> <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3>Methods defined here:<br>
<dl><dt><a name="FileLayer-__init__"><strong>__init__</strong></a>(self, file, template)</dt><dd><tt>file&nbsp;--&nbsp;output&nbsp;stream&nbsp;or&nbsp;None&nbsp;to&nbsp;use&nbsp;sys.stdout<br>
template&nbsp;--&nbsp;template&nbsp;object&nbsp;for&nbsp;generating&nbsp;this&nbsp;file<br>
&nbsp;<br>
This&nbsp;constructor&nbsp;is&nbsp;usually&nbsp;not&nbsp;called&nbsp;directly.&nbsp;&nbsp;Use<br>
template.start_file()&nbsp;to&nbsp;create&nbsp;a&nbsp;FileLayer&nbsp;instead.</tt></dd></dl>

<dl><dt><a name="FileLayer-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;all&nbsp;child&nbsp;layers&nbsp;and&nbsp;flush&nbsp;the&nbsp;output&nbsp;to&nbsp;the&nbsp;output&nbsp;<br>
stream.&nbsp;&nbsp;This&nbsp;function&nbsp;must&nbsp;be&nbsp;called&nbsp;to&nbsp;generate&nbsp;a&nbsp;complete<br>
file.<br>
&nbsp;<br>
Returns&nbsp;the&nbsp;file&nbsp;object&nbsp;where&nbsp;output&nbsp;was&nbsp;sent.</tt></dd></dl>

<dl><dt><a name="FileLayer-flush"><strong>flush</strong></a>(self)</dt><dd><tt>Flush&nbsp;as&nbsp;much&nbsp;output&nbsp;as&nbsp;possible&nbsp;to&nbsp;the&nbsp;output&nbsp;stream.</tt></dd></dl>

<dl><dt><a name="FileLayer-open"><strong>open</strong></a>(self, **args)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;layer&nbsp;representing&nbsp;the&nbsp;content&nbsp;between&nbsp;the<br>
header&nbsp;and&nbsp;footer.&nbsp;&nbsp;Use&nbsp;keyword&nbsp;arguments&nbsp;to&nbsp;fill&nbsp;the<br>
slots&nbsp;in&nbsp;the&nbsp;header&nbsp;and&nbsp;footer.</tt></dd></dl>

<h3><a name="Layer">class <strong>Layer</strong></a> <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3>Methods defined here:<br>
<dl><dt><a name="Layer-__init__"><strong>__init__</strong></a>(self, template, header, footer)</dt><dd><tt>template&nbsp;--&nbsp;template&nbsp;object&nbsp;for&nbsp;generating&nbsp;this&nbsp;layer<br>
header&nbsp;--&nbsp;text&nbsp;before&nbsp;the&nbsp;content&nbsp;of&nbsp;this&nbsp;layer<br>
footer&nbsp;--&nbsp;text&nbsp;after&nbsp;the&nbsp;content&nbsp;of&nbsp;this&nbsp;layer<br>
&nbsp;<br>
This&nbsp;constructor&nbsp;should&nbsp;not&nbsp;be&nbsp;called&nbsp;directly.&nbsp;&nbsp;Use<br>
the&nbsp;open()&nbsp;function&nbsp;in&nbsp;a&nbsp;FileLayer&nbsp;or&nbsp;the&nbsp;open_layer()<br>
function&nbsp;in&nbsp;another&nbsp;Layer&nbsp;object&nbsp;to&nbsp;create&nbsp;a&nbsp;new&nbsp;Layer.</tt></dd></dl>

<dl><dt><a name="Layer-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;this&nbsp;layer&nbsp;and&nbsp;return&nbsp;its&nbsp;output.<br>
&nbsp;<br>
This&nbsp;function&nbsp;should&nbsp;not&nbsp;be&nbsp;called&nbsp;directly.&nbsp;&nbsp;Use&nbsp;the<br>
close()&nbsp;function&nbsp;in&nbsp;the&nbsp;FileLayer&nbsp;object&nbsp;instead.</tt></dd></dl>

<dl><dt><a name="Layer-close_child"><strong>close_child</strong></a>(self)</dt><dd><tt>If&nbsp;we&nbsp;have&nbsp;an&nbsp;open&nbsp;child&nbsp;layer&nbsp;close&nbsp;it&nbsp;and&nbsp;add&nbsp;its<br>
output&nbsp;to&nbsp;our&nbsp;own.</tt></dd></dl>

<dl><dt><a name="Layer-flush"><strong>flush</strong></a>(self)</dt><dd><tt>Flush&nbsp;as&nbsp;much&nbsp;output&nbsp;as&nbsp;possible&nbsp;and&nbsp;return&nbsp;it.<br>
&nbsp;<br>
This&nbsp;function&nbsp;should&nbsp;not&nbsp;be&nbsp;called&nbsp;directly.&nbsp;&nbsp;Use&nbsp;the<br>
flush()&nbsp;function&nbsp;in&nbsp;the&nbsp;FileLayer&nbsp;object&nbsp;instead.</tt></dd></dl>

<dl><dt><a name="Layer-open_layer"><strong>open_layer</strong></a>(self, layer, **args)</dt><dd><tt>layer&nbsp;--&nbsp;name&nbsp;of&nbsp;layer&nbsp;in&nbsp;the&nbsp;template&nbsp;to&nbsp;open<br>
Use&nbsp;keyword&nbsp;arguments&nbsp;to&nbsp;fill&nbsp;this&nbsp;layer's&nbsp;slots.<br>
&nbsp;<br>
open_layer(&nbsp;layer&nbsp;name,&nbsp;**&nbsp;args&nbsp;)&nbsp;-&gt;&nbsp;child&nbsp;Layer&nbsp;object<br>
&nbsp;<br>
open&nbsp;a&nbsp;layer&nbsp;as&nbsp;a&nbsp;child&nbsp;of&nbsp;this&nbsp;one,&nbsp;filling&nbsp;its&nbsp;slots&nbsp;with<br>
values&nbsp;from&nbsp;args</tt></dd></dl>

<dl><dt><a name="Layer-write"><strong>write</strong></a>(self, text)</dt><dd><tt>text&nbsp;--&nbsp;text&nbsp;or&nbsp;markup&nbsp;as&nbsp;interpreted&nbsp;by&nbsp;the&nbsp;template</tt></dd></dl>

<dl><dt><a name="Layer-write_layer"><strong>write_layer</strong></a>(self, layer, **args)</dt><dd><tt>layer&nbsp;--&nbsp;name&nbsp;of&nbsp;layer&nbsp;in&nbsp;the&nbsp;template&nbsp;to&nbsp;write<br>
Use&nbsp;keyword&nbsp;arguments&nbsp;to&nbsp;fill&nbsp;this&nbsp;layer's&nbsp;slots.</tt></dd></dl>

<h2>HTML Markup</h2><a name="expand_html_markup"></a><h3>function expand_html_markup <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3><dl><dt><a name="-expand_html_markup"><strong>expand_html_markup</strong></a>(v)</dt><dd><tt>Return&nbsp;an&nbsp;HTML&nbsp;string&nbsp;based&nbsp;on&nbsp;markup&nbsp;v.<br>
&nbsp;<br>
HTML&nbsp;markup&nbsp;is&nbsp;expanded&nbsp;recursively.&nbsp;Each&nbsp;of&nbsp;the&nbsp;content<br>
values&nbsp;below&nbsp;are&nbsp;passed&nbsp;to&nbsp;expand_html_markup&nbsp;again&nbsp;before&nbsp;<br>
applying&nbsp;the&nbsp;operation&nbsp;on&nbsp;the&nbsp;right:<br>
&nbsp;<br>
string&nbsp;or&nbsp;unicode&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;HTML-escaped&nbsp;version&nbsp;of&nbsp;string<br>
[content1,&nbsp;content2,&nbsp;...]&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;concatenate&nbsp;content1,&nbsp;content2,&nbsp;...<br>
('join',list,sep)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;join&nbsp;items&nbsp;in&nbsp;list&nbsp;with&nbsp;seperator&nbsp;sep<br>
('pluralize',count,singular_content,plural_content)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;if&nbsp;count&nbsp;==&nbsp;1&nbsp;use&nbsp;singular_content,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherwise&nbsp;use&nbsp;plural_content<br>
('urljoin',head,tail)&nbsp;-&gt;&nbsp;&nbsp;join&nbsp;safe&nbsp;url&nbsp;head&nbsp;with&nbsp;unsafe&nbsp;url-ending&nbsp;tail<br>
('href',link,content)&nbsp;-&gt;&nbsp;&nbsp;HTML&nbsp;href&nbsp;to&nbsp;link&nbsp;wrapped&nbsp;around&nbsp;content<br>
('target',name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;HTML&nbsp;target&nbsp;name<br>
('br',)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;HTML&nbsp;line&nbsp;break<br>
('br',count)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;HTML&nbsp;line&nbsp;break&nbsp;*&nbsp;count<br>
('p',)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;HTML&nbsp;paragraph&nbsp;break<br>
('p',content)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;HTML&nbsp;paragraph<br>
('i',content)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;italics<br>
('b',content)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;bold<br>
('u',content)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;underline<br>
('&amp;',entity)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;HTML&nbsp;entity&nbsp;(entity&nbsp;has&nbsp;no&nbsp;&amp;&nbsp;or&nbsp;;)<br>
RawHTML(value)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;&nbsp;value&nbsp;unmodified</tt></dd></dl>
<h3><a name="RawHTML">class <strong>RawHTML</strong></a> <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3>Methods defined here:<br>
<dl><dt><a name="RawHTML-__init__"><strong>__init__</strong></a>(self, value)</dt><dd><tt>value&nbsp;--&nbsp;segment&nbsp;of&nbsp;HTML&nbsp;as&nbsp;a&nbsp;string</tt></dd></dl>

<dl><dt><a name="RawHTML-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>

<h2>Utility functions</h2><a name="html_url_encode"></a><h3>function html_url_encode <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3><dl><dt><a name="-html_url_encode"><strong>html_url_encode</strong></a>(text, query<font color="#909090">=False</font>)</dt><dd><tt>text&nbsp;--&nbsp;text&nbsp;to&nbsp;be&nbsp;included&nbsp;as&nbsp;part&nbsp;of&nbsp;a&nbsp;URL<br>
query&nbsp;--&nbsp;if&nbsp;True&nbsp;use&nbsp;"+"&nbsp;instead&nbsp;ot&nbsp;"%20"&nbsp;for&nbsp;spaces</tt></dd></dl>
<a name="html_href"></a><h3>function html_href <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3><dl><dt><a name="-html_href"><strong>html_href</strong></a>(link, value)</dt><dd><tt>Return&nbsp;'&lt;a&nbsp;href="link"&gt;value&lt;/a&gt;'.<br>
&nbsp;<br>
Neither&nbsp;link&nbsp;nor&nbsp;value&nbsp;is&nbsp;escaped&nbsp;by&nbsp;this&nbsp;function.</tt></dd></dl>
<a name="html_target"></a><h3>function html_target <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3><dl><dt><a name="-html_target"><strong>html_target</strong></a>(target, caption)</dt><dd><tt>Return&nbsp;'&lt;a&nbsp;name="target"&gt;caption&lt;/a&gt;'.<br>
&nbsp;<br>
Neither&nbsp;target&nbsp;nor&nbsp;caption&nbsp;is&nbsp;escaped&nbsp;by&nbsp;this&nbsp;function.</tt></dd></dl>
<a name="html_escape"></a><h3>function html_escape <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3><dl><dt><a name="-html_escape"><strong>html_escape</strong></a>(text)</dt><dd><tt>text&nbsp;--&nbsp;text&nbsp;to&nbsp;be&nbsp;escaped&nbsp;for&nbsp;inclusion&nbsp;within&nbsp;HTML.</tt></dd></dl>
<a name="django_form"></a><h3>function django_form <span style="font-size:small; padding-left: 20px">[<a href="#top">back to top</a>]</span></h3><dl><dt><a name="-django_form"><strong>django_form</strong></a>(form, errors<font color="#909090">=True</font>, join_errors<font color="#909090">=&lt;function &lt;lambda&gt;&gt;</font>)</dt><dd><tt>Converts&nbsp;a&nbsp;django&nbsp;FormWrapper&nbsp;object&nbsp;to&nbsp;a&nbsp;dictionary&nbsp;that<br>
can&nbsp;be&nbsp;used&nbsp;by&nbsp;Templayer.&nbsp;&nbsp;Each&nbsp;field&nbsp;is&nbsp;rendered&nbsp;into&nbsp;a<br>
%form.NAME%&nbsp;slot.<br>
&nbsp;<br>
If&nbsp;errors&nbsp;is&nbsp;True&nbsp;then&nbsp;this&nbsp;function&nbsp;will&nbsp;also&nbsp;render<br>
errors&nbsp;into&nbsp;%form.NAME.errors%&nbsp;slots.<br>
&nbsp;<br>
When&nbsp;there&nbsp;is&nbsp;more&nbsp;than&nbsp;one&nbsp;error&nbsp;on&nbsp;a&nbsp;single&nbsp;field&nbsp;the<br>
errors&nbsp;will&nbsp;be&nbsp;joined&nbsp;with&nbsp;the&nbsp;join_errors&nbsp;function.<br>
The&nbsp;default&nbsp;join_errors&nbsp;function&nbsp;puts&nbsp;a&nbsp;newline&nbsp;between&nbsp;each<br>
error.<br>
&nbsp;<br>
eg:<br>
If&nbsp;tmpl&nbsp;is&nbsp;an&nbsp;HTMLTemplate&nbsp;object&nbsp;with&nbsp;a&nbsp;{form_layer}&nbsp;layer<br>
and&nbsp;form&nbsp;is&nbsp;a&nbsp;FormWrapper&nbsp;object&nbsp;with&nbsp;username&nbsp;and&nbsp;password<br>
fields,&nbsp;then&nbsp;this&nbsp;code&nbsp;will&nbsp;fill&nbsp;the&nbsp;{form_layer}&nbsp;layer's&nbsp;<br>
%title%,&nbsp;%form.username%,&nbsp;%form.password%,&nbsp;<br>
%form.username.errors%&nbsp;and&nbsp;%form.password.errors%&nbsp;slots:<br>
&nbsp;<br>
tmpl.format('form_layer',&nbsp;title="hello",&nbsp;**django_form(form))</tt></dd></dl>

</body>
</html>