[Checkins] SVN: z3c.pt/trunk/z3c/pt/clauses.py Repeat-variable now initialized properly.

Malthe Borch mborch at gmail.com
Sat Mar 22 09:21:07 EDT 2008


Log message for revision 84842:
  Repeat-variable now initialized properly.

Changed:
  U   z3c.pt/trunk/z3c/pt/clauses.py

-=-
Modified: z3c.pt/trunk/z3c/pt/clauses.py
===================================================================
--- z3c.pt/trunk/z3c/pt/clauses.py	2008-03-21 17:44:47 UTC (rev 84841)
+++ z3c.pt/trunk/z3c/pt/clauses.py	2008-03-22 13:21:06 UTC (rev 84842)
@@ -527,7 +527,7 @@
 
 class Repeat(object):
     """
-      >>> from z3c.pt.generation import CodeIO; stream = CodeIO()
+      >>> from z3c.pt.generation import CodeIO
       >>> from z3c.pt.testing import pyexp
 
     We need to set up the repeat object.
@@ -537,6 +537,7 @@
 
     Simple repeat loop and repeat data structure:
 
+      >>> stream = CodeIO()
       >>> _repeat = Repeat("i", pyexp("range(5)"))
       >>> _repeat.begin(stream)
       >>> stream.write("r = repeat['i']")
@@ -548,12 +549,20 @@
       (3, 3, False, False, 4, True, False)
       (4, 4, False, True, 5, False, True)
       >>> _repeat.end(stream)
-      
+
+    A repeat over an empty set.
+    
+      >>> stream = CodeIO()
+      >>> _repeat = Repeat("j", pyexp("range(0).__iter__()"))
+      >>> _repeat.begin(stream)
+      >>> _repeat.end(stream)
+      >>> exec stream.getvalue()
+
     """
         
     def __init__(self, v, e, scope=()):
         self.variable = v
-        self.define = Define(v, ("None",))
+        self.define = Define(v, types.value("None"))
         self.assign = Assign(e)
 
     def begin(self, stream):
@@ -573,12 +582,12 @@
         stream.write("while %s:" % iterator)
         stream.indent()
         stream.write("%s = %s.next()" % (variable, iterator))
-
+        
     def end(self, stream):
         # cook before leaving loop
-        stream.cook()
+        stream.cook()        
+        stream.outdent()
         
-        stream.outdent()
         self.define.end(stream)
         self.assign.end(stream)
         stream.restore()



More information about the Checkins mailing list