# HG changeset patch
# User cmlenz
# Date 1156345228 0
# Node ID 929ef2913b875af082bbd63c587eec74b8df30ce
# Parent f0b32f1c478cf972a78f1ddf4c8affd46711ca4f
Allow leading whitespace in expressions. Closes #38. Thanks to Christian Boos for the patch!
diff --git a/markup/template.py b/markup/template.py
--- 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)
diff --git a/markup/tests/template.py b/markup/tests/template.py
--- a/markup/tests/template.py
+++ b/markup/tests/template.py
@@ -669,6 +669,10 @@
tmpl = Template(' ${var} $var')
self.assertEqual(' 42 42', str(tmpl.generate(var=42)))
+ def test_interpolate_leading_trailing_space(self):
+ tmpl = Template('${ foo }')
+ self.assertEqual('bar', str(tmpl.generate(foo='bar')))
+
def test_interpolate_multiline(self):
tmpl = Template("""${dict(
bar = 'baz'