summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bonnet <mikeb@redhat.com>2009-10-16 19:52:41 -0400
committerR. Tyler Ballance <tyler@monkeypox.org>2009-10-18 16:24:06 -0700
commit4213bbe9856d9c33a35ed2d7d5dba1ca16472015 (patch)
tree1cf28ab5d507d04aa0b476a37300d7e6de358533
parent87cb61133ea9f1b53b811d534e3fae73e41c5e9a (diff)
downloadpython-cheetah-4213bbe9856d9c33a35ed2d7d5dba1ca16472015.tar.gz
remove unnecessary encoding in the default filters, now that everything is a unicode object internally
There is no longer any value in having the filters return encoded str objects, since they need to be decoded back to unicode before they can be combined with the rest of the template text (which is managed as a unicode object). This patch maintains API compatibility but fundamentally changes the behavior of some of the filters. RawOrEncodedUnicode and EncodeUnicode should be deprecated and removed from the API. Signed-off-by: R. Tyler Ballance <tyler@monkeypox.org>
-rw-r--r--cheetah/Filters.py35
1 files changed, 7 insertions, 28 deletions
diff --git a/cheetah/Filters.py b/cheetah/Filters.py
index 452afc5..d452439 100644
--- a/cheetah/Filters.py
+++ b/cheetah/Filters.py
@@ -29,40 +29,19 @@ class Filter(object):
if val is None:
return u''
if isinstance(val, unicode):
- if encoding:
- return val.encode(encoding)
- else:
- return val
+ # ignore the encoding and return the unicode object
+ return val
else:
try:
- return str(val)
- except UnicodeEncodeError:
return unicode(val)
- return u''
+ except UnicodeDecodeError:
+ # we could put more fallbacks here, but we'll just pass the str
+ # on and let DummyTransaction worry about it
+ return str(val)
RawOrEncodedUnicode = Filter
-class EncodeUnicode(Filter):
- def filter(self, val,
- encoding='utf8',
- str=str,
- **kw):
- """Encode Unicode strings, by default in UTF-8.
-
- >>> import Cheetah.Template
- >>> t = Cheetah.Template.Template('''
- ... $myvar
- ... ${myvar, encoding='utf16'}
- ... ''', searchList=[{'myvar': u'Asni\xe8res'}],
- ... filter='EncodeUnicode')
- >>> print t
- """
- if isinstance(val, unicode):
- return val
- if val is None:
- return ''
- return str(val)
-
+EncodeUnicode = Filter
class Markdown(EncodeUnicode):
'''