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
Copyright (C) 2012-2017 Edgewall Software