[Checkins] SVN: Sandbox/malthe/chameleon.genshi/ Fixed bug where the py:choose temporary variables (which are only indirectly scoped) would conflict with other temporary variables.
Malthe Borch
mborch at gmail.com
Mon Sep 29 11:03:59 EDT 2008
Log message for revision 91599:
Fixed bug where the py:choose temporary variables (which are only indirectly scoped) would conflict with other temporary variables.
Changed:
U Sandbox/malthe/chameleon.genshi/CHANGES.txt
U Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.py
U Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.txt
-=-
Modified: Sandbox/malthe/chameleon.genshi/CHANGES.txt
===================================================================
--- Sandbox/malthe/chameleon.genshi/CHANGES.txt 2008-09-29 15:00:51 UTC (rev 91598)
+++ Sandbox/malthe/chameleon.genshi/CHANGES.txt 2008-09-29 15:03:58 UTC (rev 91599)
@@ -4,10 +4,11 @@
Head
~~~~
+- Fixed scoping errors when using ``py:choose`` inside a loop. [malthe]
+
- Add a specialized TemplateLoader. [wichert]
-
1.0a1 (released 9/24/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~
Modified: Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.py
===================================================================
--- Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.py 2008-09-29 15:00:51 UTC (rev 91598)
+++ Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.py 2008-09-29 15:03:58 UTC (rev 91599)
@@ -112,7 +112,7 @@
stream = self.stream
choose_expression = self._pull_attribute(utils.py_attr('choose'))
if choose_expression is not None:
- choose_variable = stream.save()
+ choose_variable = stream.new_var()
if choose_expression:
self._add_define(choose_variable, choose_expression)
@@ -125,7 +125,7 @@
namespaces={'py': config.PY_NS}):
expression = element._pull_attribute(utils.py_attr('when'))
- variable = stream.save()
+ variable = stream.new_var()
variables.append(variable)
# add definition to ancestor
Modified: Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.txt
===================================================================
--- Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.txt 2008-09-29 15:00:51 UTC (rev 91598)
+++ Sandbox/malthe/chameleon.genshi/src/chameleon/genshi/language.txt 2008-09-29 15:03:58 UTC (rev 91599)
@@ -439,22 +439,29 @@
You can use a loop variable with py:choose:
>>> print render("""\
- ... <!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"
... xmlns:py="http://genshi.edgewall.org/">
... <body>
... <div py:for="article in [dict(wfstate='new'), dict(wfstate='pending')]">
- ... <span py:choose="article['wfstate']"/>
+ ... <span py:choose="article['wfstate']">
+ ... <span py:when="'pending'">Pending</span>
+ ... <span py:when="'new'">New</span>
+ ... </span>
... </div>
... </body>
... </html>""")
<html>
<body>
<div>
- <span/>
- <span/>
+ <span>
+ <span>New</span>
+ </span>
</div>
+ <div>
+ <span>
+ <span>Pending</span>
+ </span>
+ </div>
</body>
</html>
More information about the Checkins
mailing list