changeset 370:077fe85dff13 stable-0.3.x

Ported [445] to 0.3.x.
author cmlenz
date Wed, 22 Nov 2006 21:03:31 +0000
parents 0d749146842c
children 1a0c19b02025
files genshi/template.py genshi/tests/template.py
diffstat 2 files changed, 37 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/template.py
+++ b/genshi/template.py
@@ -1205,7 +1205,9 @@
                   ('choose', ChooseDirective),
                   ('with', WithDirective)]
 
-    _DIRECTIVE_RE = re.compile(r'^\s*(?<!\\)#((?:\w+|#).*)\n?', re.MULTILINE)
+    _DIRECTIVE_RE = re.compile(r'(?:^[ \t]*(?<!\\)#(end).*\n?)|'
+                               r'(?:^[ \t]*(?<!\\)#((?:\w+|#).*)\n?)',
+                               re.MULTILINE)
 
     def _parse(self, encoding):
         """Parse the template from text input."""
--- a/genshi/tests/template.py
+++ b/genshi/tests/template.py
@@ -371,7 +371,8 @@
           #end
           ${echo('Hi', name='you')}
         """)
-        self.assertEqual("""                      Hi, you!
+        self.assertEqual("""
+                      Hi, you!
         """, str(tmpl.generate()))
 
 
@@ -1168,13 +1169,44 @@
         #if foo
           bar
         #end 'if foo'""")
-        self.assertEqual('', str(tmpl.generate()))
+        self.assertEqual('\n', str(tmpl.generate()))
 
     def test_latin1_encoded(self):
         text = u'$foo\xf6$bar'.encode('iso-8859-1')
         tmpl = TextTemplate(text, encoding='iso-8859-1')
         self.assertEqual(u'x\xf6y', unicode(tmpl.generate(foo='x', bar='y')))
 
+    def test_empty_lines1(self):
+        tmpl = TextTemplate("""Your items:
+
+        #for item in items
+          * ${item}
+        #end""")
+        self.assertEqual("""Your items:
+
+          * 0
+          * 1
+          * 2
+""", tmpl.generate(items=range(3)).render('text'))
+
+    def test_empty_lines2(self):
+        tmpl = TextTemplate("""Your items:
+
+        #for item in items
+          * ${item}
+
+        #end""")
+        self.assertEqual("""Your items:
+
+          * 0
+
+          * 1
+
+          * 2
+
+""", tmpl.generate(items=range(3)).render('text'))
+
+
 class TemplateLoaderTestCase(unittest.TestCase):
     """Tests for the template loader."""
 
Copyright (C) 2012-2017 Edgewall Software