summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Chauvat <nicolas.chauvat@logilab.fr>2008-04-07 21:01:37 +0200
committerNicolas Chauvat <nicolas.chauvat@logilab.fr>2008-04-07 21:01:37 +0200
commit4499e6e947d5334d65747f109ef2260486a8c76b (patch)
tree17d4aed6bdc44d2e2e526eadff95f2a51af2d2de
parent4a2e38261c9976311813e773ecb30eca1e471101 (diff)
downloadlogilab-common-4499e6e947d5334d65747f109ef2260486a8c76b.tar.gz
fixme: improve flatten
-rw-r--r--__init__.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/__init__.py b/__init__.py
index e1ef63c..006f92b 100644
--- a/__init__.py
+++ b/__init__.py
@@ -93,7 +93,30 @@ class nullobject(object):
def __nonzero__(self):
return False
-# XXX move in a specific module
+# flatten -----
+# XXX move in a specific module and use yield instead
+# do not mix flatten and translate
+#
+# def iterable(obj):
+# try: iter(obj)
+# except: return False
+# return True
+#
+# def is_string_like(obj):
+# try: obj +''
+# except (TypeError, ValueError): return False
+# return True
+#
+#def is_scalar(obj):
+# return is_string_like(obj) or not iterable(obj)
+#
+#def flatten(seq):
+# for item in seq:
+# if is_scalar(item):
+# yield item
+# else:
+# for subitem in flatten(item):
+# yield subitem
def flatten(iterable, tr_func=None, results=None):
"""flatten a list of list with any level