diff options
author | Marcel Hellkamp <marc@gsites.de> | 2011-10-07 14:32:45 +0200 |
---|---|---|
committer | Marcel Hellkamp <marc@gsites.de> | 2011-10-11 17:49:18 +0200 |
commit | 00133d48c4c58c99233a424925ea834f3f69b486 (patch) | |
tree | 74c15b798025e5353be841b10aaa8cbece88dc46 | |
parent | bf40a6c6c9bac3508ce388683b5ec50c3840ad54 (diff) | |
download | bottle-00133d48c4c58c99233a424925ea834f3f69b486.tar.gz |
Added three new functions to the SimpleTemplate default namespace:
* get() works like dict.get() on the namespace.
* setdefault() works similar, but sets the value if not defined.
* defined() checks if a name exists in the current namespace.
-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") |