# 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('