diff genshi/template/eval.py @ 716:fe05ebf91775

fix ticket [209] - make sure py:with is valid, and add a test to make sure empty py:for is invalid
author aflett
date Tue, 08 Apr 2008 22:38:43 +0000
parents 09715f868a73
children 09a90feb9269
line wrap: on
line diff
--- a/genshi/template/eval.py
+++ b/genshi/template/eval.py
@@ -387,11 +387,12 @@
     source = source.strip()
     if mode == 'exec':
         lines = [line.expandtabs() for line in source.splitlines()]
-        first = lines[0]
-        rest = dedent('\n'.join(lines[1:])).rstrip()
-        if first.rstrip().endswith(':') and not rest[0].isspace():
-            rest = '\n'.join(['    %s' % line for line in rest.splitlines()])
-        source = '\n'.join([first, rest])
+        if lines:
+            first = lines[0]
+            rest = dedent('\n'.join(lines[1:])).rstrip()
+            if first.rstrip().endswith(':') and not rest[0].isspace():
+                rest = '\n'.join(['    %s' % line for line in rest.splitlines()])
+            source = '\n'.join([first, rest])
     if isinstance(source, unicode):
         source = '\xef\xbb\xbf' + source.encode('utf-8')
     return parse(source, mode)
@@ -417,7 +418,10 @@
     else:
         gen = ModuleCodeGenerator(tree)
         lines = source.splitlines()
-        extract = lines[0]
+        if not lines:
+            extract = ''
+        else:
+            extract = lines[0]
         if len(lines) > 1:
             extract += ' ...'
         name = '<Suite %r>' % (extract)
Copyright (C) 2012-2017 Edgewall Software