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.base.Context</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.base-module.html">Module base</a> ::
52
<table cellpadding="0" cellspacing="0">
53
<!-- hide/show private -->
58
<!-- ==================== CLASS DESCRIPTION ==================== -->
59
<h1 class="epydoc">Class Context</h1><br /><br />
60
<pre class="base-tree">
63
<strong class="uidshort">Context</strong>
67
<p>Container for template input data.</p>
68
<p>A context provides a stack of scopes (represented by dictionaries).</p>
69
<p>Template directives such as loops can push a new scope on the stack with
70
data that should only be available inside the loop. When the loop
71
terminates, that scope can get popped off the stack again.</p>
72
<pre class="py-doctest">
73
<span class="py-prompt">>>> </span>ctxt = Context(one=<span class="py-string">'foo'</span>, other=1)
74
<span class="py-prompt">>>> </span>ctxt.get(<span class="py-string">'one'</span>)
75
<span class="py-output">'foo'</span>
76
<span class="py-output"></span><span class="py-prompt">>>> </span>ctxt.get(<span class="py-string">'other'</span>)
77
<span class="py-output">1</span>
78
<span class="py-output"></span><span class="py-prompt">>>> </span>ctxt.push(dict(one=<span class="py-string">'frost'</span>))
79
<span class="py-prompt">>>> </span>ctxt.get(<span class="py-string">'one'</span>)
80
<span class="py-output">'frost'</span>
81
<span class="py-output"></span><span class="py-prompt">>>> </span>ctxt.get(<span class="py-string">'other'</span>)
82
<span class="py-output">1</span>
83
<span class="py-output"></span><span class="py-prompt">>>> </span>ctxt.pop()
84
<span class="py-output">{'one': 'frost'}</span>
85
<span class="py-output"></span><span class="py-prompt">>>> </span>ctxt.get(<span class="py-string">'one'</span>)
86
<span class="py-output">'foo'</span></pre><br /><br />
88
<!-- ==================== INSTANCE METHODS ==================== -->
89
<a name="section-InstanceMethods"></a>
90
<table class="summary" border="1" cellpadding="3"
91
cellspacing="0" width="100%" bgcolor="white">
92
<tr bgcolor="#70b0f0" class="table-header">
93
<td align="left" colspan="2" class="table-header">
94
<span class="table-header">Instance Methods</span></td>
97
<td width="15%" align="right" valign="top" class="summary">
98
<span class="summary-type"> </span>
99
</td><td class="summary">
100
<table width="100%" cellpadding="0" cellspacing="0" border="0">
102
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
103
<span class="summary-sig-arg">**data</span>)</span><br />
104
Initialize the template context with the given keyword arguments as
106
<td align="right" valign="top">
116
<td width="15%" align="right" valign="top" class="summary">
117
<span class="summary-type"> </span>
118
</td><td class="summary">
119
<table width="100%" cellpadding="0" cellspacing="0" border="0">
121
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
123
<td align="right" valign="top">
133
<td width="15%" align="right" valign="top" class="summary">
134
<span class="summary-type"> </span>
135
</td><td class="summary">
136
<table width="100%" cellpadding="0" cellspacing="0" border="0">
138
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#__contains__" class="summary-sig-name">__contains__</a>(<span class="summary-sig-arg">self</span>,
139
<span class="summary-sig-arg">key</span>)</span><br />
140
Return whether a variable exists in any of the scopes.</td>
141
<td align="right" valign="top">
151
<td width="15%" align="right" valign="top" class="summary">
152
<span class="summary-type"> </span>
153
</td><td class="summary">
154
<table width="100%" cellpadding="0" cellspacing="0" border="0">
156
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#__delitem__" class="summary-sig-name">__delitem__</a>(<span class="summary-sig-arg">self</span>,
157
<span class="summary-sig-arg">key</span>)</span><br />
158
Remove a variable from all scopes.</td>
159
<td align="right" valign="top">
169
<td width="15%" align="right" valign="top" class="summary">
170
<span class="summary-type"> </span>
171
</td><td class="summary">
172
<table width="100%" cellpadding="0" cellspacing="0" border="0">
174
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
175
<span class="summary-sig-arg">key</span>)</span><br />
176
Get a variables's value, starting at the current scope and going
178
<td align="right" valign="top">
188
<td width="15%" align="right" valign="top" class="summary">
189
<span class="summary-type"> </span>
190
</td><td class="summary">
191
<table width="100%" cellpadding="0" cellspacing="0" border="0">
193
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#__len__" class="summary-sig-name">__len__</a>(<span class="summary-sig-arg">self</span>)</span><br />
194
Return the number of distinctly named variables in the context.</td>
195
<td align="right" valign="top">
205
<td width="15%" align="right" valign="top" class="summary">
206
<span class="summary-type"> </span>
207
</td><td class="summary">
208
<table width="100%" cellpadding="0" cellspacing="0" border="0">
210
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#__setitem__" class="summary-sig-name">__setitem__</a>(<span class="summary-sig-arg">self</span>,
211
<span class="summary-sig-arg">key</span>,
212
<span class="summary-sig-arg">value</span>)</span><br />
213
Set a variable in the current scope.</td>
214
<td align="right" valign="top">
224
<td width="15%" align="right" valign="top" class="summary">
225
<span class="summary-type"> </span>
226
</td><td class="summary">
227
<table width="100%" cellpadding="0" cellspacing="0" border="0">
229
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#get" class="summary-sig-name">get</a>(<span class="summary-sig-arg">self</span>,
230
<span class="summary-sig-arg">key</span>,
231
<span class="summary-sig-arg">default</span>=<span class="summary-sig-default">None</span>)</span><br />
232
Get a variable's value, starting at the current scope and going
234
<td align="right" valign="top">
244
<td width="15%" align="right" valign="top" class="summary">
245
<span class="summary-type"> </span>
246
</td><td class="summary">
247
<table width="100%" cellpadding="0" cellspacing="0" border="0">
249
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#keys" class="summary-sig-name">keys</a>(<span class="summary-sig-arg">self</span>)</span><br />
250
Return the name of all variables in the context.</td>
251
<td align="right" valign="top">
261
<td width="15%" align="right" valign="top" class="summary">
262
<span class="summary-type"> </span>
263
</td><td class="summary">
264
<table width="100%" cellpadding="0" cellspacing="0" border="0">
266
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#items" class="summary-sig-name">items</a>(<span class="summary-sig-arg">self</span>)</span><br />
267
Return a list of <tt class="rst-docutils literal"><span class="pre">(name,</span> <span class="pre">value)</span></tt> tuples for all variables in the
269
<td align="right" valign="top">
279
<td width="15%" align="right" valign="top" class="summary">
280
<span class="summary-type"> </span>
281
</td><td class="summary">
282
<table width="100%" cellpadding="0" cellspacing="0" border="0">
284
<td><span class="summary-sig"><a href="genshi.template.base.Context-class.html#push" class="summary-sig-name">push</a>(<span class="summary-sig-arg">self</span>,
285
<span class="summary-sig-arg">data</span>)</span><br />
286
Push a new scope on the stack.</td>
287
<td align="right" valign="top">
297
<td width="15%" align="right" valign="top" class="summary">
298
<span class="summary-type"> </span>
299
</td><td class="summary">
300
<table width="100%" cellpadding="0" cellspacing="0" border="0">
302
<td><span class="summary-sig"><a name="pop"></a><span class="summary-sig-name">pop</span>(<span class="summary-sig-arg">self</span>)</span><br />
303
Pop the top-most scope from the stack.</td>
304
<td align="right" valign="top">
314
<td colspan="2" class="summary">
315
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
316
<code>__delattr__</code>,
317
<code>__getattribute__</code>,
318
<code>__hash__</code>,
319
<code>__new__</code>,
320
<code>__reduce__</code>,
321
<code>__reduce_ex__</code>,
322
<code>__setattr__</code>,
328
<!-- ==================== PROPERTIES ==================== -->
329
<a name="section-Properties"></a>
330
<table class="summary" border="1" cellpadding="3"
331
cellspacing="0" width="100%" bgcolor="white">
332
<tr bgcolor="#70b0f0" class="table-header">
333
<td align="left" colspan="2" class="table-header">
334
<span class="table-header">Properties</span></td>
337
<td colspan="2" class="summary">
338
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
339
<code>__class__</code>
344
<!-- ==================== METHOD DETAILS ==================== -->
345
<a name="section-MethodDetails"></a>
346
<table class="details" border="1" cellpadding="3"
347
cellspacing="0" width="100%" bgcolor="white">
348
<tr bgcolor="#70b0f0" class="table-header">
349
<td align="left" colspan="2" class="table-header">
350
<span class="table-header">Method Details</span></td>
353
<a name="__init__"></a>
355
<table class="details" border="1" cellpadding="3"
356
cellspacing="0" width="100%" bgcolor="white">
358
<table width="100%" cellpadding="0" cellspacing="0" border="0">
359
<tr valign="top"><td>
360
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
361
<span class="sig-arg">**data</span>)</span>
362
<br /><em class="fname">(Constructor)</em>
364
</td><td align="right" valign="top"
369
Initialize the template context with the given keyword arguments as
378
<a name="__repr__"></a>
380
<table class="details" border="1" cellpadding="3"
381
cellspacing="0" width="100%" bgcolor="white">
383
<table width="100%" cellpadding="0" cellspacing="0" border="0">
384
<tr valign="top"><td>
385
<h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
386
<br /><em class="fname">(Representation operator)</em>
388
</td><td align="right" valign="top"
397
<dd><em class="note">(inherited documentation)</em></dd>
402
<a name="__contains__"></a>
404
<table class="details" border="1" cellpadding="3"
405
cellspacing="0" width="100%" bgcolor="white">
407
<table width="100%" cellpadding="0" cellspacing="0" border="0">
408
<tr valign="top"><td>
409
<h3 class="epydoc"><span class="sig"><span class="sig-name">__contains__</span>(<span class="sig-arg">self</span>,
410
<span class="sig-arg">key</span>)</span>
411
<br /><em class="fname">(In operator)</em>
413
</td><td align="right" valign="top"
418
Return whether a variable exists in any of the scopes.
421
<dd><ul class="nomargin-top">
422
<li><strong class="pname"><code>key</code></strong> - the name of the variable</li>
427
<a name="__delitem__"></a>
429
<table class="details" border="1" cellpadding="3"
430
cellspacing="0" width="100%" bgcolor="white">
432
<table width="100%" cellpadding="0" cellspacing="0" border="0">
433
<tr valign="top"><td>
434
<h3 class="epydoc"><span class="sig"><span class="sig-name">__delitem__</span>(<span class="sig-arg">self</span>,
435
<span class="sig-arg">key</span>)</span>
436
<br /><em class="fname">(Index deletion operator)</em>
438
</td><td align="right" valign="top"
443
Remove a variable from all scopes.
446
<dd><ul class="nomargin-top">
447
<li><strong class="pname"><code>key</code></strong> - the name of the variable</li>
452
<a name="__getitem__"></a>
454
<table class="details" border="1" cellpadding="3"
455
cellspacing="0" width="100%" bgcolor="white">
457
<table width="100%" cellpadding="0" cellspacing="0" border="0">
458
<tr valign="top"><td>
459
<h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
460
<span class="sig-arg">key</span>)</span>
461
<br /><em class="fname">(Indexing operator)</em>
463
</td><td align="right" valign="top"
468
Get a variables's value, starting at the current scope and going
472
<dd><ul class="nomargin-top">
473
<li><strong class="pname"><code>key</code></strong> - the name of the variable</li>
476
<dd>the variable value</dd>
478
<dd><ul class="nomargin-top">
479
<li><code><strong class='fraise'>KeyError</strong></code> - if the requested variable wasn't found in any scope</li>
484
<a name="__len__"></a>
486
<table class="details" border="1" cellpadding="3"
487
cellspacing="0" width="100%" bgcolor="white">
489
<table width="100%" cellpadding="0" cellspacing="0" border="0">
490
<tr valign="top"><td>
491
<h3 class="epydoc"><span class="sig"><span class="sig-name">__len__</span>(<span class="sig-arg">self</span>)</span>
492
<br /><em class="fname">(Length operator)</em>
494
</td><td align="right" valign="top"
499
Return the number of distinctly named variables in the context.
502
<dd>the number of variables in the context</dd>
506
<a name="__setitem__"></a>
508
<table class="details" border="1" cellpadding="3"
509
cellspacing="0" width="100%" bgcolor="white">
511
<table width="100%" cellpadding="0" cellspacing="0" border="0">
512
<tr valign="top"><td>
513
<h3 class="epydoc"><span class="sig"><span class="sig-name">__setitem__</span>(<span class="sig-arg">self</span>,
514
<span class="sig-arg">key</span>,
515
<span class="sig-arg">value</span>)</span>
516
<br /><em class="fname">(Index assignment operator)</em>
518
</td><td align="right" valign="top"
523
Set a variable in the current scope.
526
<dd><ul class="nomargin-top">
527
<li><strong class="pname"><code>key</code></strong> - the name of the variable</li>
528
<li><strong class="pname"><code>value</code></strong> - the variable value</li>
535
<table class="details" border="1" cellpadding="3"
536
cellspacing="0" width="100%" bgcolor="white">
538
<table width="100%" cellpadding="0" cellspacing="0" border="0">
539
<tr valign="top"><td>
540
<h3 class="epydoc"><span class="sig"><span class="sig-name">get</span>(<span class="sig-arg">self</span>,
541
<span class="sig-arg">key</span>,
542
<span class="sig-arg">default</span>=<span class="sig-default">None</span>)</span>
544
</td><td align="right" valign="top"
549
Get a variable's value, starting at the current scope and going
553
<dd><ul class="nomargin-top">
554
<li><strong class="pname"><code>key</code></strong> - the name of the variable</li>
555
<li><strong class="pname"><code>default</code></strong> - the default value to return when the variable is not
563
<table class="details" border="1" cellpadding="3"
564
cellspacing="0" width="100%" bgcolor="white">
566
<table width="100%" cellpadding="0" cellspacing="0" border="0">
567
<tr valign="top"><td>
568
<h3 class="epydoc"><span class="sig"><span class="sig-name">keys</span>(<span class="sig-arg">self</span>)</span>
570
</td><td align="right" valign="top"
575
Return the name of all variables in the context.
578
<dd>a list of variable names</dd>
584
<table class="details" border="1" cellpadding="3"
585
cellspacing="0" width="100%" bgcolor="white">
587
<table width="100%" cellpadding="0" cellspacing="0" border="0">
588
<tr valign="top"><td>
589
<h3 class="epydoc"><span class="sig"><span class="sig-name">items</span>(<span class="sig-arg">self</span>)</span>
591
</td><td align="right" valign="top"
596
Return a list of <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">(name,</span> <span class="pre">value)</span></tt> tuples for all variables in the
600
<dd>a list of variables</dd>
606
<table class="details" border="1" cellpadding="3"
607
cellspacing="0" width="100%" bgcolor="white">
609
<table width="100%" cellpadding="0" cellspacing="0" border="0">
610
<tr valign="top"><td>
611
<h3 class="epydoc"><span class="sig"><span class="sig-name">push</span>(<span class="sig-arg">self</span>,
612
<span class="sig-arg">data</span>)</span>
614
</td><td align="right" valign="top"
619
Push a new scope on the stack.
622
<dd><ul class="nomargin-top">
623
<li><strong class="pname"><code>data</code></strong> - the data dictionary to push on the context stack.</li>
629
<!-- ==================== NAVIGATION BAR ==================== -->
630
<table class="navbar" border="0" width="100%" cellpadding="0"
631
bgcolor="#a0c0ff" cellspacing="0">
634
<th> <a
635
href="genshi-module.html">Home</a> </th>
638
<th> <a
639
href="module-tree.html">Trees</a> </th>
642
<th> <a
643
href="identifier-index.html">Indices</a> </th>
646
<th> <a
647
href="help.html">Help</a> </th>
649
<!-- Project homepage -->
650
<th class="navbar" align="right" width="100%">
651
<table border="0" cellpadding="0" cellspacing="0">
652
<tr><th class="navbar" align="center"
653
><a class="navbar" target="_top" href="../index.html">Documentation Index</a></th>
657
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
659
<td align="left" class="footer">
660
Generated by Epydoc 3.0beta1 on Mon Apr 16 16:02:14 2007
662
<td align="right" class="footer">
663
<a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
668
<script type="text/javascript">
670
// Private objects are initially displayed (because if
671
// javascript is turned off then we want them to be
672
// visible); but by default, we want to hide them. So hide
673
// them unless we have a cookie that says to show them.