Mercurial > genshi > genshi-test
diff genshi/util.py @ 357:c5684b65c9b7
Improve the way locals (in list comprehensions, lambdas and generator expressions) are handled in template expressions.
author | cmlenz |
---|---|
date | Thu, 16 Nov 2006 16:18:21 +0000 |
parents | c5ec3146fcb6 |
children | d6e9170c5ccc |
line wrap: on
line diff
--- a/genshi/util.py +++ b/genshi/util.py @@ -131,3 +131,22 @@ item.previous = None item.next = self.head self.head.previous = self.head = item + + +def flatten(items): + """Flattens a potentially nested sequence into a flat list: + + >>> flatten((1, 2)) + [1, 2] + >>> flatten([1, (2, 3), 4]) + [1, 2, 3, 4] + >>> flatten([1, (2, [3, 4]), 5]) + [1, 2, 3, 4, 5] + """ + retval = [] + for item in items: + if isinstance(item, (list, tuple)): + retval += flatten(item) + else: + retval.append(item) + return retval