Mercurial > genshi > mirror
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)) |