Mercurial > genshi > mirror
changeset 191:3289055a8c32 trunk
Allow leading whitespace in expressions. Closes #38. Thanks to Christian Boos for the patch!
author | cmlenz |
---|---|
date | Wed, 23 Aug 2006 15:00:28 +0000 |
parents | 769d945ac030 |
children | b64e36bc1100 |
files | markup/template.py markup/tests/template.py |
diffstat | 2 files changed, 12 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/markup/template.py +++ b/markup/template.py @@ -853,27 +853,27 @@ """ def _interpolate(text, patterns, filename=filename, lineno=lineno, offset=offset): - for idx, group in enumerate(patterns.pop(0).split(text)): + for idx, grp in enumerate(patterns.pop(0).split(text)): if idx % 2: try: - yield EXPR, Expression(group, filename, lineno), \ + yield EXPR, Expression(grp.strip(), filename, lineno), \ (filename, lineno, offset) except SyntaxError, err: raise TemplateSyntaxError(err, filename, lineno, offset + (err.offset or 0)) - elif group: + elif grp: if patterns: - for result in _interpolate(group, patterns[:]): + for result in _interpolate(grp, patterns[:]): yield result else: - yield TEXT, group.replace('$$', '$'), \ + yield TEXT, grp.replace('$$', '$'), \ (filename, lineno, offset) - if '\n' in group: - lines = group.splitlines() + if '\n' in grp: + lines = grp.splitlines() lineno += len(lines) - 1 offset += len(lines[-1]) else: - offset += len(group) + offset += len(grp) return _interpolate(text, [cls._FULL_EXPR_RE, cls._SHORT_EXPR_RE]) _interpolate = classmethod(_interpolate)
--- a/markup/tests/template.py +++ b/markup/tests/template.py @@ -669,6 +669,10 @@ tmpl = Template('<root> ${var} $var</root>') self.assertEqual('<root> 42 42</root>', str(tmpl.generate(var=42))) + def test_interpolate_leading_trailing_space(self): + tmpl = Template('<root>${ foo }</root>') + self.assertEqual('<root>bar</root>', str(tmpl.generate(foo='bar'))) + def test_interpolate_multiline(self): tmpl = Template("""<root>${dict( bar = 'baz'