summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHanno Schlichting <hanno@hannosch.eu>2011-08-20 15:44:04 +0000
committerHanno Schlichting <hanno@hannosch.eu>2011-08-20 15:44:04 +0000
commit1367f9511261bea77dfae339fcf91513ba6fa996 (patch)
tree1637140515d47cadec5334c058848a7cad001f04 /src
parentb951f9ec834ff7f1ee2ccde58f9ee472097d61fb (diff)
downloadzope-pagetemplate-1367f9511261bea77dfae339fcf91513ba6fa996.tar.gz
Replaced StringIO stream class with a faster list-based implementation.
Diffstat (limited to 'src')
-rw-r--r--src/zope/pagetemplate/pagetemplate.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/zope/pagetemplate/pagetemplate.py b/src/zope/pagetemplate/pagetemplate.py
index 0b3bfcc..55f7ffb 100644
--- a/src/zope/pagetemplate/pagetemplate.py
+++ b/src/zope/pagetemplate/pagetemplate.py
@@ -22,8 +22,6 @@ from zope.tal.talgenerator import TALGenerator
from zope.tal.talinterpreter import TALInterpreter
from zope.tales.engine import Engine
from zope.component import queryUtility
-# Don't use cStringIO here! It's not unicode aware.
-from StringIO import StringIO
from zope.pagetemplate.interfaces import IPageTemplateSubclassing
from zope.pagetemplate.interfaces import IPageTemplateEngine
@@ -35,6 +33,20 @@ _default_options = {}
_error_start = '<!-- Page Template Diagnostics'
+class StringIO(list):
+ """Unicode aware append-only version of StringIO.
+ """
+ write = list.append
+
+ def __init__(self, value=None):
+ list.__init__(self)
+ if value is not None:
+ self.append(value)
+
+ def getvalue(self):
+ return u''.join(self)
+
+
class PageTemplate(object):
"""Page Templates using TAL, TALES, and METAL.