# HG changeset patch # User cmlenz # Date 1182200439 0 # Node ID bd13c96cbfe4a8caeb4731e759e87f97d2f3aa85 # Parent b5116a918e703d6416045301ad4a1e0a3e64deff Fix interpolation of short-form expressions that include literal text before the expression. Thanks to Alec for reporting the issue. diff --git a/genshi/template/interpolation.py b/genshi/template/interpolation.py --- a/genshi/template/interpolation.py +++ b/genshi/template/interpolation.py @@ -137,6 +137,9 @@ yield True, text[offset + 1:pos].strip() elif not escaped and next == PREFIX: + if offset > pos: + yield False, text[pos:offset] + pos = offset escaped = True pos = offset + 1 diff --git a/genshi/template/tests/interpolation.py b/genshi/template/tests/interpolation.py --- a/genshi/template/tests/interpolation.py +++ b/genshi/template/tests/interpolation.py @@ -60,6 +60,12 @@ self.assertEqual(TEXT, parts[0][0]) self.assertEqual('$bla', parts[0][1]) + def test_interpolate_short_escaped_2(self): + parts = list(interpolate('my $$bla = 2')) + self.assertEqual(1, len(parts)) + self.assertEqual(TEXT, parts[0][0]) + self.assertEqual('my $bla = 2', parts[0][1]) + def test_interpolate_short_doubleescaped(self): parts = list(interpolate('$$$bla')) self.assertEqual(2, len(parts))