# HG changeset patch # User cmlenz # Date 1236845468 0 # Node ID 728f25c1d1a3c5353a58ee7f2f6f956b6f6441b7 # Parent bc91cc3987eb4000296d41391b50c8110b344492 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: