diff options
author | Arun Kumar <arunkakorp@gmail.com> | 2009-10-14 09:59:45 +0000 |
---|---|---|
committer | R. Tyler Ballance <tyler@monkeypox.org> | 2009-10-14 19:56:00 -0700 |
commit | 9ac5e4c6ed36c3b6b1bc8340fdb69d32db9d98c4 (patch) | |
tree | 8e2a7434ce749d88b36927d9d289023566ecd120 | |
parent | d3940a809019c44da2348eca12e087a9843f9b64 (diff) | |
download | python-cheetah-9ac5e4c6ed36c3b6b1bc8340fdb69d32db9d98c4.tar.gz |
Use cStringIO instead of array in DummyTransaction
Signed-off-by: R. Tyler Ballance <tyler@monkeypox.org>
-rwxr-xr-x[-rw-r--r--] | cheetah/DummyTransaction.py | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/cheetah/DummyTransaction.py b/cheetah/DummyTransaction.py index 26d2ea7..8b30abf 100644..100755 --- a/cheetah/DummyTransaction.py +++ b/cheetah/DummyTransaction.py @@ -10,6 +10,11 @@ specific DummyTransaction or DummyResponse behavior import types +try: + from cStringIO import StringIO +except ImportError: + import StringIO + class DummyResponseFailure(Exception): pass @@ -20,24 +25,30 @@ class DummyResponse(object): servlet ''' def __init__(self): - self._outputChunks = [] - + self._outputChunks = StringIO() + def flush(self): pass def write(self, value): - self._outputChunks.append(value) + self._outputChunks.write(value) def writeln(self, txt): write(txt) write('\n') def getvalue(self, outputChunks=None): - chunks = outputChunks or self._outputChunks - try: - return ''.join(chunks) + #chunks = outputChunks or self._outputChunks + try: + if outputChunks is not None: + return ''.join(outputChunks) + else: + return self._outputChunks.getvalue() except UnicodeDecodeError, ex: - nonunicode = [c for c in chunks if not isinstance(c, unicode)] + #not sure about the best way to check for non-unicode in StringIO + nonunicode = '' + if outputChunks: + nonunicode = [c for c in outputChunks if not isinstance(c, unicode)] raise DummyResponseFailure('''Looks like you're trying to mix encoded strings with Unicode strings (most likely utf-8 encoded ones) @@ -82,7 +93,7 @@ class TransformerResponse(DummyResponse): if isinstance(_filter, types.TypeType): _filter = _filter() return _filter.filter(output) - return output + return output class TransformerTransaction(object): |