# HG changeset patch # User cmlenz # Date 1169134907 0 # Node ID 9582328f82e5510ece5b82ea7e727e1a303a4065 # Parent 8dd0d34a9fb79c5fb6e474bd583c74054e625db7 Make the `Markup` class available by default in template expressions. Closes #67. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -34,6 +34,8 @@ * Expressions can now contain dict literals (ticket #37). * It is now possible to have one or more escaped dollar signs in front of a full expression (ticket #92). + * The `Markup` class is now available by default in template expressions + (ticket #67). Version 0.3.6 diff --git a/genshi/template/eval.py b/genshi/template/eval.py --- a/genshi/template/eval.py +++ b/genshi/template/eval.py @@ -22,6 +22,7 @@ except NameError: from sets import Set as set +from genshi.core import Markup from genshi.util import flatten __all__ = ['Expression', 'Undefined'] @@ -200,7 +201,7 @@ lineno, code.co_lnotab, (), ()) BUILTINS = __builtin__.__dict__.copy() -BUILTINS['Undefined'] = Undefined +BUILTINS.update({'Markup': Markup, 'Undefined': Undefined}) _UNDEF = Undefined(None) def _lookup_name(data, name): diff --git a/genshi/template/tests/eval.py b/genshi/template/tests/eval.py --- a/genshi/template/tests/eval.py +++ b/genshi/template/tests/eval.py @@ -15,6 +15,7 @@ import sys import unittest +from genshi.core import Markup from genshi.template.eval import Expression, Undefined @@ -36,6 +37,12 @@ self.assertEqual('bar', Expression('id').evaluate({'id': 'bar'})) self.assertEqual(None, Expression('id').evaluate({'id': None})) + def test_builtins(self): + expr = Expression('Markup') + self.assertEqual(expr.evaluate({}), Markup) + expr = Expression('Undefined') + self.assertEqual(expr.evaluate({}), Undefined) + def test_str_literal(self): self.assertEqual('foo', Expression('"foo"').evaluate({})) self.assertEqual('foo', Expression('"""foo"""').evaluate({}))