Mercurial > genshi > genshi-test
changeset 825:9cf631c0eace
Minor simplification and performance improvement to the flattening of dynamic attribute values. Thanks to Christoph Zwerschke for the suggestion (see #295).
author | cmlenz |
---|---|
date | Thu, 12 Mar 2009 08:11:08 +0000 |
parents | 01922ac166c0 |
children | 0319a8874510 |
files | genshi/template/base.py genshi/template/tests/markup.py |
diffstat | 2 files changed, 10 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- a/genshi/template/tests/markup.py +++ b/genshi/template/tests/markup.py @@ -75,6 +75,10 @@ tmpl = MarkupTemplate('<root attr=""/>') self.assertEqual('<root attr=""/>', str(tmpl.generate())) + def test_empty_attr_interpolated(self): + tmpl = MarkupTemplate('<root attr="$attr"/>') + self.assertEqual('<root attr=""/>', str(tmpl.generate(attr=''))) + def test_bad_directive_error(self): xml = '<p xmlns:py="http://genshi.edgewall.org/" py:do="nothing" />' try: