comparison genshi/template/markup.py @ 407:f37d8e6acdf2 trunk

Move string interpolation code into separate module (`genshi.template.interpolation`).
author cmlenz
date Wed, 21 Feb 2007 14:17:22 +0000
parents 5340931530e2
children 4675d5cf6c67
comparison
equal deleted inserted replaced
406:01be13831f5e 407:f37d8e6acdf2
21 from genshi.core import START, END, START_NS, END_NS, TEXT, PI, COMMENT 21 from genshi.core import START, END, START_NS, END_NS, TEXT, PI, COMMENT
22 from genshi.input import XMLParser 22 from genshi.input import XMLParser
23 from genshi.template.base import BadDirectiveError, Template, \ 23 from genshi.template.base import BadDirectiveError, Template, \
24 TemplateSyntaxError, _apply_directives, SUB 24 TemplateSyntaxError, _apply_directives, SUB
25 from genshi.template.eval import Suite 25 from genshi.template.eval import Suite
26 from genshi.template.interpolation import interpolate
26 from genshi.template.loader import TemplateNotFound 27 from genshi.template.loader import TemplateNotFound
27 from genshi.template.directives import * 28 from genshi.template.directives import *
28 29
29 if sys.version_info < (2, 4): 30 if sys.version_info < (2, 4):
30 _ctxt2dict = lambda ctxt: ctxt.frames[0] 31 _ctxt2dict = lambda ctxt: ctxt.frames[0]
125 raise BadDirectiveError(name.localname, 126 raise BadDirectiveError(name.localname,
126 self.filepath, pos[1]) 127 self.filepath, pos[1])
127 directives.append((cls, value, ns_prefix.copy(), pos)) 128 directives.append((cls, value, ns_prefix.copy(), pos))
128 else: 129 else:
129 if value: 130 if value:
130 value = list(self._interpolate(value, self.basedir, 131 value = list(interpolate(value, self.basedir, *pos))
131 *pos))
132 if len(value) == 1 and value[0][0] is TEXT: 132 if len(value) == 1 and value[0][0] is TEXT:
133 value = value[0][1] 133 value = value[0][1]
134 else: 134 else:
135 value = [(TEXT, u'', pos)] 135 value = [(TEXT, u'', pos)]
136 new_attrs.append((name, value)) 136 new_attrs.append((name, value))
198 pos[1] + (err.lineno or 1) - 1, 198 pos[1] + (err.lineno or 1) - 1,
199 pos[2] + (err.offset or 0)) 199 pos[2] + (err.offset or 0))
200 stream.append((EXEC, suite, pos)) 200 stream.append((EXEC, suite, pos))
201 201
202 elif kind is TEXT: 202 elif kind is TEXT:
203 for kind, data, pos in self._interpolate(data, self.basedir, 203 for kind, data, pos in interpolate(data, self.basedir, *pos):
204 *pos):
205 stream.append((kind, data, pos)) 204 stream.append((kind, data, pos))
206 205
207 elif kind is COMMENT: 206 elif kind is COMMENT:
208 if not data.lstrip().startswith('!'): 207 if not data.lstrip().startswith('!'):
209 stream.append((kind, data, pos)) 208 stream.append((kind, data, pos))
Copyright (C) 2012-2017 Edgewall Software