From 94e9fcad7b310867421f6a3047e179ab4bb02d49 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Tue, 21 May 2013 17:39:57 +0100 Subject: Fixed interpolation on tuples --- markupsafe/__init__.py | 2 +- markupsafe/tests.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/markupsafe/__init__.py b/markupsafe/__init__.py index 6a8dc5e..ea67117 100644 --- a/markupsafe/__init__.py +++ b/markupsafe/__init__.py @@ -92,7 +92,7 @@ class Markup(text_type): def __mod__(self, arg): if isinstance(arg, tuple): - arg = tuple(imap(_MarkupEscapeHelper, arg, self.escape)) + arg = tuple(_MarkupEscapeHelper(x, self.escape) for x in arg) else: arg = _MarkupEscapeHelper(arg, self.escape) return self.__class__(text_type.__mod__(self, arg)) diff --git a/markupsafe/tests.py b/markupsafe/tests.py index 12cd69b..a4c3571 100644 --- a/markupsafe/tests.py +++ b/markupsafe/tests.py @@ -44,6 +44,21 @@ class MarkupTestCase(unittest.TestCase): assert Markup('%s') % Foo() == \ 'awesome' + def test_tuple_interpol(self): + self.assertEqual(Markup('%s:%s') % ( + '', + '', + ), Markup(u'<foo>:<bar>')) + + def test_dict_interpol(self): + self.assertEqual(Markup('%(foo)s') % { + 'foo': '', + }, Markup(u'<foo>')) + self.assertEqual(unicode(Markup('%(foo)s:%(bar)s') % { + 'foo': '', + 'bar': '', + }), unicode(Markup(u'<foo>:<bar>'))) + def test_escaping(self): # escaping and unescaping assert escape('"<>&\'') == '"<>&'' -- cgit v1.2.1