changeset 636:e0f12a6f3612

Follow-up to [751]: applying the optimization to text templates was actually slowing them down, so only do it for markup templates.
author cmlenz
date Wed, 05 Sep 2007 13:06:59 +0000
parents 12d0357440b3
children 93a19f09eebe
files genshi/template/base.py genshi/template/markup.py
diffstat 2 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/template/base.py
+++ b/genshi/template/base.py
@@ -23,8 +23,7 @@
 from StringIO import StringIO
 import sys
 
-from genshi.core import Attrs, Markup, Stream, StreamEventKind, START, TEXT, \
-                        _ensure
+from genshi.core import Attrs, Stream, StreamEventKind, START, TEXT, _ensure
 from genshi.input import ParseError
 
 __all__ = ['Context', 'Template', 'TemplateError', 'TemplateRuntimeError',
@@ -302,6 +301,7 @@
     """
 
     serializer = None
+    _number_conv = unicode # function used to convert numbers to event data
 
     def __init__(self, source, basedir=None, filename=None, loader=None,
                  encoding=None, lookup='strict', allow_exec=True):
@@ -445,6 +445,7 @@
         `TEXT` events.
         """
         filters = (self._flatten, self._eval)
+        number_conv = self._number_conv
 
         for kind, data, pos in stream:
 
@@ -477,7 +478,7 @@
                     if isinstance(result, basestring):
                         yield TEXT, result, pos
                     elif isinstance(result, (int, float, long)):
-                        yield TEXT, Markup(result), pos
+                        yield TEXT, number_conv(result), pos
                     elif hasattr(result, '__iter__'):
                         substream = _ensure(result)
                         for filter_ in filters:
--- a/genshi/template/markup.py
+++ b/genshi/template/markup.py
@@ -15,7 +15,7 @@
 
 from itertools import chain
 
-from genshi.core import Attrs, Namespace, Stream, StreamEventKind
+from genshi.core import Attrs, Markup, Namespace, Stream, StreamEventKind
 from genshi.core import START, END, START_NS, END_NS, TEXT, PI, COMMENT
 from genshi.input import XMLParser
 from genshi.template.base import BadDirectiveError, Template, \
@@ -58,6 +58,7 @@
                   ('attrs', AttrsDirective),
                   ('strip', StripDirective)]
     serializer = 'xml'
+    _number_conv = Markup
 
     def __init__(self, source, basedir=None, filename=None, loader=None,
                  encoding=None, lookup='strict', allow_exec=True):
Copyright (C) 2012-2017 Edgewall Software