# HG changeset patch # User cmlenz # Date 1188997619 0 # Node ID e0f12a6f3612c6bdde4d498e8dd5415958938975 # Parent 12d0357440b3b07f1995bfa91a7f680ce8043de2 Follow-up to [751]: applying the optimization to text templates was actually slowing them down, so only do it for markup templates. diff --git a/genshi/template/base.py b/genshi/template/base.py --- 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: diff --git a/genshi/template/markup.py b/genshi/template/markup.py --- 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):