]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Introduce `oneline` template whitespace mode.
authorBen Darnell <ben@bendarnell.com>
Sun, 5 Jul 2015 21:13:07 +0000 (17:13 -0400)
committerBen Darnell <ben@bendarnell.com>
Sun, 5 Jul 2015 21:13:07 +0000 (17:13 -0400)
This slightly-more-aggressive whitespace removal doesn't actually
save any space, but it removes the very conspicuous blank lines
that are often left around template directives.

Closes #291.
Closes #1083.

tornado/template.py
tornado/test/template_test.py

index d0d35b3e8a66883e634f07b62b30250474231c5d..9a4c6c64a0fa2816597b55ea5b3167fbee33f9ae 100644 (file)
@@ -218,6 +218,8 @@ def filter_whitespace(mode, text):
     * ``all``: Return all whitespace unmodified.
     * ``single``: Collapse consecutive whitespace with a single whitespace
       character, preserving newlines.
+    * ``oneline``: Collapse all runs of whitespace into a single space
+      character, removing all newlines in the process.
 
     .. versionadded:: 4.3
     """
@@ -227,6 +229,8 @@ def filter_whitespace(mode, text):
         text = re.sub(r"([\t ]+)", " ", text)
         text = re.sub(r"(\s*\n\s*)", "\n", text)
         return text
+    elif mode == 'oneline':
+        return re.sub(r"(\s+)", " ", text)
     else:
         raise Exception("invalid whitespace mode %s" % mode)
 
index 3808bb3365e3d4c1a41c6d79e9b5071661c82f4c..833276aed0553f0d76ce87cff7492058780b4cc6 100644 (file)
@@ -442,15 +442,20 @@ raw: {% raw name %}""",
 
     def test_whitespace_by_loader(self):
         templates = {
-            "foo.html": "\t\tfoo",
-            "bar.txt": "\t\tbar",
+            "foo.html": "\t\tfoo\n\n",
+            "bar.txt": "\t\tbar\n\n",
             }
         loader = DictLoader(templates, whitespace='all')
-        self.assertEqual(loader.load("foo.html").generate(), b"\t\tfoo")
-        self.assertEqual(loader.load("bar.txt").generate(), b"\t\tbar")
+        self.assertEqual(loader.load("foo.html").generate(), b"\t\tfoo\n\n")
+        self.assertEqual(loader.load("bar.txt").generate(), b"\t\tbar\n\n")
+
         loader = DictLoader(templates, whitespace='single')
-        self.assertEqual(loader.load("foo.html").generate(), b" foo")
-        self.assertEqual(loader.load("bar.txt").generate(), b" bar")
+        self.assertEqual(loader.load("foo.html").generate(), b" foo\n")
+        self.assertEqual(loader.load("bar.txt").generate(), b" bar\n")
+
+        loader = DictLoader(templates, whitespace='oneline')
+        self.assertEqual(loader.load("foo.html").generate(), b" foo ")
+        self.assertEqual(loader.load("bar.txt").generate(), b" bar ")
 
 
 class TemplateLoaderTest(unittest.TestCase):