From 4416c0a654944dc7829e5ff6879575fe420b46b9 Mon Sep 17 00:00:00 2001 From: Alek Storm Date: Tue, 17 Apr 2012 14:55:05 -0400 Subject: [PATCH] Add `else` as possible sub-clause in `try` blocks in templates. Add test case. --- tornado/template.py | 4 ++-- tornado/test/template_test.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tornado/template.py b/tornado/template.py index a211f39602..01a37599b4 100644 --- a/tornado/template.py +++ b/tornado/template.py @@ -165,7 +165,7 @@ def add(x, y): ``{% set *x* = *y* %}`` Sets a local variable. -``{% try %}...{% except %}...{% finally %}...{% end %}`` +``{% try %}...{% except %}...{% finally %}...{% else %}...{% end %}`` Same as the python ``try`` statement. ``{% while *condition* %}... {% end %}`` @@ -757,7 +757,7 @@ def _parse(reader, template, in_block=None): # Intermediate ("else", "elif", etc) blocks intermediate_blocks = { - "else": set(["if", "for", "while"]), + "else": set(["if", "for", "while", "try"]), "elif": set(["if"]), "except": set(["try"]), "finally": set(["try"]), diff --git a/tornado/test/template_test.py b/tornado/test/template_test.py index c0175deea3..3ea190c300 100644 --- a/tornado/test/template_test.py +++ b/tornado/test/template_test.py @@ -100,6 +100,16 @@ def test_if(self): self.assertEqual(template.generate(x=5), b("yes")) self.assertEqual(template.generate(x=3), b("no")) + def test_try(self): + template = Template(utf8("""{% try %} +try{% set y = 1/x %} +{% except %}-except +{% else %}-else +{% finally %}-finally +{% end %}""")) + self.assertEqual(template.generate(x=1), b("\ntry\n-else\n-finally\n")) + self.assertEqual(template.generate(x=0), b("\ntry-except\n-finally\n")) + def test_comment_directive(self): template = Template(utf8("{% comment blah blah %}foo")) self.assertEqual(template.generate(), b("foo"))