shithub: pokecrystal

Download patch

ref: 7d6af535e9395a48e9e97b0c2a0741239c41f165
parent: 06bc6699dadc2e48c0de6b3041c8619303972ba3
author: Bryan Bishop <kanzure@gmail.com>
date: Fri Apr 20 22:43:19 EDT 2012

flatten a list of dependencies into one giant list

--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -4204,6 +4204,21 @@
     asm += "\n; " + hex(last_address)
     return asm
 
+def flattener(x):
+    "flattens a list of sublists into just one list (generator)"
+    try:
+        it = iter(x)
+    except TypeError:
+        yield x
+    else:
+        for i in it:
+            for j in flattener(i):
+                yield j
+
+def flatten(x):
+    "flattens a list of sublists into just one list"
+    return list(flattener(x))
+
 def get_dependencies_for(some_object):
     """
     calculates which labels need to be satisfied for an object
@@ -4215,7 +4230,8 @@
     """
     if isinstance(some_object, int):
         some_object = script_parse_table[some_object]
-    return some_object.get_dependencies()
+    deps = some_object.get_dependencies()
+    return list(flatten(deps))
 
 def isolate_incbins():
     "find each incbin line"
--