From: Ben Darnell Date: Sun, 5 Jul 2015 21:13:07 +0000 (-0400) Subject: Introduce `oneline` template whitespace mode. X-Git-Tag: v4.3.0b1~77 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=254783a0da0f395c46423094170bb7cabba8a8f3;p=thirdparty%2Ftornado.git Introduce `oneline` template whitespace mode. 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. --- diff --git a/tornado/template.py b/tornado/template.py index d0d35b3e8..9a4c6c64a 100644 --- a/tornado/template.py +++ b/tornado/template.py @@ -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) diff --git a/tornado/test/template_test.py b/tornado/test/template_test.py index 3808bb336..833276aed 100644 --- a/tornado/test/template_test.py +++ b/tornado/test/template_test.py @@ -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):