1
<?xml version="1.0" encoding="ascii"?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
"DTD/xhtml1-transitional.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
<title>genshi.template.directives.DefDirective</title>
7
<link rel="stylesheet" href="epydoc.css" type="text/css" />
8
<script type="text/javascript" src="epydoc.js"></script>
11
<body bgcolor="white" text="black" link="blue" vlink="#204080"
13
<!-- ==================== NAVIGATION BAR ==================== -->
14
<table class="navbar" border="0" width="100%" cellpadding="0"
15
bgcolor="#a0c0ff" cellspacing="0">
18
<th> <a
19
href="genshi-module.html">Home</a> </th>
22
<th> <a
23
href="module-tree.html">Trees</a> </th>
26
<th> <a
27
href="identifier-index.html">Indices</a> </th>
30
<th> <a
31
href="help.html">Help</a> </th>
33
<!-- Project homepage -->
34
<th class="navbar" align="right" width="100%">
35
<table border="0" cellpadding="0" cellspacing="0">
36
<tr><th class="navbar" align="center"
37
><a class="navbar" target="_top" href="../index.html">Documentation Index</a></th>
41
<table width="100%" cellpadding="0" cellspacing="0">
44
<span class="breadcrumbs">
45
<a href="genshi-module.html">Package genshi</a> ::
46
<a href="genshi.template-module.html">Package template</a> ::
47
<a href="genshi.template.directives-module.html">Module directives</a> ::
48
Class DefDirective
52
<table cellpadding="0" cellspacing="0">
53
<!-- hide/show private -->
58
<!-- ==================== CLASS DESCRIPTION ==================== -->
59
<h1 class="epydoc">Class DefDirective</h1><br /><br />
60
<pre class="base-tree">
65
<strong class="uidshort">DefDirective</strong>
69
<p>Implementation of the <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">py:def</span></tt> template directive.</p>
70
<p>This directive can be used to create "Named Template Functions", which
71
are template snippets that are not actually output during normal
72
processing, but rather can be expanded from expressions in other places
74
<p>A named template function can be used just like a normal Python function
75
from template expressions:</p>
76
<pre class="py-doctest">
77
<span class="py-prompt">>>> </span><span class="py-keyword">from</span> genshi.template <span class="py-keyword">import</span> MarkupTemplate
78
<span class="py-prompt">>>> </span>tmpl = MarkupTemplate(<span class="py-string">'''<div xmlns:py="http://genshi.edgewall.org/"></span>
79
<span class="py-more">... </span><span class="py-string"> <p py:def="echo(greeting, name='world')" class="message"></span>
80
<span class="py-more">... </span><span class="py-string"> ${greeting}, ${name}!</span>
81
<span class="py-more">... </span><span class="py-string"> </p></span>
82
<span class="py-more">... </span><span class="py-string"> ${echo('Hi', name='you')}</span>
83
<span class="py-more">... </span><span class="py-string"></div>'''</span>)
84
<span class="py-prompt">>>> </span><span class="py-keyword">print</span> tmpl.generate(bar=<span class="py-string">'Bye'</span>)
85
<span class="py-output"><div></span>
86
<span class="py-output"> <p class="message"></span>
87
<span class="py-output"> Hi, you!</span>
88
<span class="py-output"> </p></span>
89
<span class="py-output"></div></span></pre>
90
<p>If a function does not require parameters, the parenthesis can be omitted
91
in the definition:</p>
92
<pre class="py-doctest">
93
<span class="py-prompt">>>> </span>tmpl = MarkupTemplate(<span class="py-string">'''<div xmlns:py="http://genshi.edgewall.org/"></span>
94
<span class="py-more">... </span><span class="py-string"> <p py:def="helloworld" class="message"></span>
95
<span class="py-more">... </span><span class="py-string"> Hello, world!</span>
96
<span class="py-more">... </span><span class="py-string"> </p></span>
97
<span class="py-more">... </span><span class="py-string"> ${helloworld()}</span>
98
<span class="py-more">... </span><span class="py-string"></div>'''</span>)
99
<span class="py-prompt">>>> </span><span class="py-keyword">print</span> tmpl.generate(bar=<span class="py-string">'Bye'</span>)
100
<span class="py-output"><div></span>
101
<span class="py-output"> <p class="message"></span>
102
<span class="py-output"> Hello, world!</span>
103
<span class="py-output"> </p></span>
104
<span class="py-output"></div></span></pre><br /><br />
106
<!-- ==================== NESTED CLASSES ==================== -->
107
<a name="section-NestedClasses"></a>
108
<table class="summary" border="1" cellpadding="3"
109
cellspacing="0" width="100%" bgcolor="white">
110
<tr bgcolor="#70b0f0" class="table-header">
111
<td align="left" colspan="2" class="table-header">
112
<span class="table-header">Nested Classes</span></td>
115
<td colspan="2" class="summary">
116
<p class="indent-wrapped-lines"><b>Inherited from <code>Directive</code></b>:
117
<code><a href="genshi.template.directives.DirectiveMeta-class.html">__metaclass__</a></code>
122
<!-- ==================== INSTANCE METHODS ==================== -->
123
<a name="section-InstanceMethods"></a>
124
<table class="summary" border="1" cellpadding="3"
125
cellspacing="0" width="100%" bgcolor="white">
126
<tr bgcolor="#70b0f0" class="table-header">
127
<td align="left" colspan="2" class="table-header">
128
<span class="table-header">Instance Methods</span></td>
131
<td width="15%" align="right" valign="top" class="summary">
132
<span class="summary-type"> </span>
133
</td><td class="summary">
134
<table width="100%" cellpadding="0" cellspacing="0" border="0">
136
<td><span class="summary-sig"><a href="genshi.template.directives.DefDirective-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
137
<span class="summary-sig-arg">args</span>,
138
<span class="summary-sig-arg">template</span>,
139
<span class="summary-sig-arg">namespaces</span>=<span class="summary-sig-default">None</span>,
140
<span class="summary-sig-arg">lineno</span>=<span class="summary-sig-default">-1</span>,
141
<span class="summary-sig-arg">offset</span>=<span class="summary-sig-default">-1</span>)</span></td>
142
<td align="right" valign="top">
152
<td width="15%" align="right" valign="top" class="summary">
153
<span class="summary-type"> </span>
154
</td><td class="summary">
155
<table width="100%" cellpadding="0" cellspacing="0" border="0">
157
<td><span class="summary-sig"><a href="genshi.template.directives.DefDirective-class.html#__call__" class="summary-sig-name">__call__</a>(<span class="summary-sig-arg">self</span>,
158
<span class="summary-sig-arg">stream</span>,
159
<span class="summary-sig-arg">ctxt</span>,
160
<span class="summary-sig-arg">directives</span>)</span><br />
161
Apply the directive to the given stream.</td>
162
<td align="right" valign="top">
172
<td width="15%" align="right" valign="top" class="summary">
173
<span class="summary-type"> </span>
174
</td><td class="summary">
175
<table width="100%" cellpadding="0" cellspacing="0" border="0">
177
<td><span class="summary-sig"><a href="genshi.template.directives.DefDirective-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span></td>
178
<td align="right" valign="top">
188
<td colspan="2" class="summary">
189
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
190
<code>__delattr__</code>,
191
<code>__getattribute__</code>,
192
<code>__hash__</code>,
193
<code>__new__</code>,
194
<code>__reduce__</code>,
195
<code>__reduce_ex__</code>,
196
<code>__setattr__</code>,
202
<!-- ==================== CLASS METHODS ==================== -->
203
<a name="section-ClassMethods"></a>
204
<table class="summary" border="1" cellpadding="3"
205
cellspacing="0" width="100%" bgcolor="white">
206
<tr bgcolor="#70b0f0" class="table-header">
207
<td align="left" colspan="2" class="table-header">
208
<span class="table-header">Class Methods</span></td>
211
<td colspan="2" class="summary">
212
<p class="indent-wrapped-lines"><b>Inherited from <code>Directive</code></b>:
218
<!-- ==================== CLASS VARIABLES ==================== -->
219
<a name="section-ClassVariables"></a>
220
<table class="summary" border="1" cellpadding="3"
221
cellspacing="0" width="100%" bgcolor="white">
222
<tr bgcolor="#70b0f0" class="table-header">
223
<td align="left" colspan="2" class="table-header">
224
<span class="table-header">Class Variables</span></td>
227
<td width="15%" align="right" valign="top" class="summary">
228
<span class="summary-type"> </span>
229
</td><td class="summary">
230
<a name="ATTRIBUTE"></a><span class="summary-name">ATTRIBUTE</span> = <code title="'function'"><code class="variable-quote">'</code><code class="variable-string">function</code><code class="variable-quote">'</code></code>
234
<td width="15%" align="right" valign="top" class="summary">
235
<span class="summary-type"> </span>
236
</td><td class="summary">
237
<a name="tagname"></a><span class="summary-name">tagname</span> = <code title="'def'"><code class="variable-quote">'</code><code class="variable-string">def</code><code class="variable-quote">'</code></code>
241
<!-- ==================== PROPERTIES ==================== -->
242
<a name="section-Properties"></a>
243
<table class="summary" border="1" cellpadding="3"
244
cellspacing="0" width="100%" bgcolor="white">
245
<tr bgcolor="#70b0f0" class="table-header">
246
<td align="left" colspan="2" class="table-header">
247
<span class="table-header">Properties</span></td>
250
<td width="15%" align="right" valign="top" class="summary">
251
<span class="summary-type"> </span>
252
</td><td class="summary">
253
<a name="args"></a><span class="summary-name">args</span>
257
<td width="15%" align="right" valign="top" class="summary">
258
<span class="summary-type"> </span>
259
</td><td class="summary">
260
<a name="defaults"></a><span class="summary-name">defaults</span>
264
<td width="15%" align="right" valign="top" class="summary">
265
<span class="summary-type"> </span>
266
</td><td class="summary">
267
<a name="name"></a><span class="summary-name">name</span>
271
<td colspan="2" class="summary">
272
<p class="indent-wrapped-lines"><b>Inherited from <code>Directive</code></b>:
275
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
276
<code>__class__</code>
281
<!-- ==================== METHOD DETAILS ==================== -->
282
<a name="section-MethodDetails"></a>
283
<table class="details" border="1" cellpadding="3"
284
cellspacing="0" width="100%" bgcolor="white">
285
<tr bgcolor="#70b0f0" class="table-header">
286
<td align="left" colspan="2" class="table-header">
287
<span class="table-header">Method Details</span></td>
290
<a name="__init__"></a>
292
<table class="details" border="1" cellpadding="3"
293
cellspacing="0" width="100%" bgcolor="white">
295
<table width="100%" cellpadding="0" cellspacing="0" border="0">
296
<tr valign="top"><td>
297
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
298
<span class="sig-arg">args</span>,
299
<span class="sig-arg">template</span>,
300
<span class="sig-arg">namespaces</span>=<span class="sig-default">None</span>,
301
<span class="sig-arg">lineno</span>=<span class="sig-default">-1</span>,
302
<span class="sig-arg">offset</span>=<span class="sig-default">-1</span>)</span>
303
<br /><em class="fname">(Constructor)</em>
305
</td><td align="right" valign="top"
318
<a name="__call__"></a>
320
<table class="details" border="1" cellpadding="3"
321
cellspacing="0" width="100%" bgcolor="white">
323
<table width="100%" cellpadding="0" cellspacing="0" border="0">
324
<tr valign="top"><td>
325
<h3 class="epydoc"><span class="sig"><span class="sig-name">__call__</span>(<span class="sig-arg">self</span>,
326
<span class="sig-arg">stream</span>,
327
<span class="sig-arg">ctxt</span>,
328
<span class="sig-arg">directives</span>)</span>
329
<br /><em class="fname">(Call operator)</em>
331
</td><td align="right" valign="top"
336
Apply the directive to the given stream.
340
<dd><em class="note">(inherited documentation)</em></dd>
345
<a name="__repr__"></a>
347
<table class="details" border="1" cellpadding="3"
348
cellspacing="0" width="100%" bgcolor="white">
350
<table width="100%" cellpadding="0" cellspacing="0" border="0">
351
<tr valign="top"><td>
352
<h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
353
<br /><em class="fname">(Representation operator)</em>
355
</td><td align="right" valign="top"
369
<!-- ==================== NAVIGATION BAR ==================== -->
370
<table class="navbar" border="0" width="100%" cellpadding="0"
371
bgcolor="#a0c0ff" cellspacing="0">
374
<th> <a
375
href="genshi-module.html">Home</a> </th>
378
<th> <a
379
href="module-tree.html">Trees</a> </th>
382
<th> <a
383
href="identifier-index.html">Indices</a> </th>
386
<th> <a
387
href="help.html">Help</a> </th>
389
<!-- Project homepage -->
390
<th class="navbar" align="right" width="100%">
391
<table border="0" cellpadding="0" cellspacing="0">
392
<tr><th class="navbar" align="center"
393
><a class="navbar" target="_top" href="../index.html">Documentation Index</a></th>
397
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
399
<td align="left" class="footer">
400
Generated by Epydoc 3.0beta1 on Mon Apr 16 16:02:14 2007
402
<td align="right" class="footer">
403
<a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
408
<script type="text/javascript">
410
// Private objects are initially displayed (because if
411
// javascript is turned off then we want them to be
412
// visible); but by default, we want to hide them. So hide
413
// them unless we have a cookie that says to show them.