# HG changeset patch # User cmlenz # Date 1236845468 0 # Node ID 9cf631c0eace8b56c489d8b6b4d3d2e7924ca704 # Parent 01922ac166c090e44f7dbb2c41d1fd2e9ca713fb Minor simplification and performance improvement to the flattening of dynamic attribute values. Thanks to Christoph Zwerschke for the suggestion (see #295). diff --git a/genshi/template/base.py b/genshi/template/base.py --- a/genshi/template/base.py +++ b/genshi/template/base.py @@ -527,14 +527,13 @@ new_attrs = [] for name, value in attrs: if type(value) is list: # this is an interpolated string - values = [] - for event in self._flatten(value, ctxt, **vars): - if event[0] is TEXT: - values.append(event[1]) - value = [x for x in values if x is not None] - if not value: + values = [event[1] + for event in self._flatten(value, ctxt, **vars) + if event[0] is TEXT and event[1] is not None + ] + if not values: continue - value = u''.join(value) + value = u''.join(values) new_attrs.append((name, value)) yield kind, (tag, Attrs(new_attrs)), pos diff --git a/genshi/template/tests/markup.py b/genshi/template/tests/markup.py --- a/genshi/template/tests/markup.py +++ b/genshi/template/tests/markup.py @@ -75,6 +75,10 @@ tmpl = MarkupTemplate('') self.assertEqual('', str(tmpl.generate())) + def test_empty_attr_interpolated(self): + tmpl = MarkupTemplate('') + self.assertEqual('', str(tmpl.generate(attr=''))) + def test_bad_directive_error(self): xml = '

' try: