changeset 1030:c5c5cbadde37 stable-0.7.x

Merge r1255 from trunk (fix slash escaping of CRLF newlines).
author hodgestar
date Wed, 19 Mar 2014 13:41:53 +0000
parents 4cbbf894c800
children 56fd1ca051af
files genshi/template/tests/text.py genshi/template/text.py
diffstat 2 files changed, 30 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/template/tests/text.py
+++ b/genshi/template/tests/text.py
@@ -171,6 +171,19 @@
   * 2
 """, tmpl.generate(items=range(3)).render(encoding=None))
 
+    def test_empty_lines1_with_crlf(self):
+        tmpl = NewTextTemplate('Your items:\r\n'
+'\r\n'
+'{% for item in items %}\\\r\n'
+'  * ${item}\r\n'
+'{% end %}')
+
+        self.assertEqual('Your items:\r\n'
+'\r\n'
+'  * 0\r\n'
+'  * 1\r\n'
+'  * 2\r\n', tmpl.generate(items=range(3)).render(encoding=None))
+
     def test_empty_lines2(self):
         tmpl = NewTextTemplate("""Your items:
 
@@ -188,6 +201,22 @@
 
 """, tmpl.generate(items=range(3)).render(encoding=None))
 
+    def test_empty_lines2_with_crlf(self):
+        tmpl = NewTextTemplate('Your items:\r\n'
+'\r\n'
+'{% for item in items %}\\\r\n'
+'  * ${item}\r\n'
+'\r\n'
+'{% end %}')
+        self.assertEqual('Your items:\r\n'
+'\r\n'
+'  * 0\r\n'
+'\r\n'
+'  * 1\r\n'
+'\r\n'
+'  * 2\r\n'
+'\r\n', tmpl.generate(items=range(3)).render(encoding=None))
+
     def test_exec_with_trailing_space(self):
         """
         Verify that a code block with trailing space does not cause a syntax
--- a/genshi/template/text.py
+++ b/genshi/template/text.py
@@ -128,7 +128,7 @@
     serializer = 'text'
 
     _DIRECTIVE_RE = r'((?<!\\)%s\s*(\w+)\s*(.*?)\s*%s|(?<!\\)%s.*?%s)'
-    _ESCAPE_RE = r'\\\n|\\(\\)|\\(%s)|\\(%s)'
+    _ESCAPE_RE = r'\\\n|\\\r\n|\\(\\)|\\(%s)|\\(%s)'
 
     def __init__(self, source, filepath=None, filename=None, loader=None,
                  encoding=None, lookup='strict', allow_exec=False,
Copyright (C) 2012-2017 Edgewall Software