diff options
-rwxr-xr-x | bottle.py | 3 | ||||
-rwxr-xr-x | test/test_stpl.py | 15 |
2 files changed, 17 insertions, 1 deletions
@@ -2684,7 +2684,8 @@ class SimpleTemplate(BaseTemplate): env = self.defaults.copy() env.update({'_stdout': _stdout, '_printlist': _stdout.extend, '_include': self.subtemplate, '_str': self._str, - '_escape': self._escape}) + '_escape': self._escape, 'get': env.get, + 'setdefault': env.setdefault, 'defined': env.__contains__}) env.update(kwargs) eval(self.co, env) if '_rebase' in env: diff --git a/test/test_stpl.py b/test/test_stpl.py index 2e6bfdc..ed3d5d7 100755 --- a/test/test_stpl.py +++ b/test/test_stpl.py @@ -160,6 +160,21 @@ class TestSimpleTemplate(unittest.TestCase): result=u'+base+\n+main+\n!1234!\n+include+\n-main-\n+include+\n-base-\n' self.assertEqual(result, t.render(content='1234')) + def test_get(self): + t = SimpleTemplate(source='{{get("x", "default")}}') + self.assertEqual('1234', t.render(x='1234')) + self.assertEqual('default', t.render()) + + def test_setdefault(self): + t = SimpleTemplate(source='%setdefault("x", "default")\n{{x}}') + self.assertEqual('1234', t.render(x='1234')) + self.assertEqual('default', t.render()) + + def test_defnied(self): + t = SimpleTemplate(source='{{x if defined("x") else "no"}}') + self.assertEqual('yes', t.render(x='yes')) + self.assertEqual('no', t.render()) + def test_notfound(self): """ Templates: Unavailable templates""" self.assertRaises(TemplateError, SimpleTemplate, name="abcdef") |