Add function for flattening 2d lists
Bug: 226974242
Test: ./out/rbcrun ./build/make/tests/run.rbc
Change-Id: Iae977b34ca0ac156ec795c54f4951c769fa994dd
diff --git a/core/product_config.rbc b/core/product_config.rbc
index f67ba8e..7a5e501 100644
--- a/core/product_config.rbc
+++ b/core/product_config.rbc
@@ -619,6 +619,12 @@
return ""
return input[l-1]
+def _flatten_2d_list(list):
+ result = []
+ for x in list:
+ result += x
+ return result
+
def _dir(paths):
"""Equivalent to the GNU make function $(dir).
@@ -785,7 +791,7 @@
if t == "list":
s = " ".join(s)
elif t != "string":
- fail("Argument to mkstrip must be a string or list.")
+ fail("Argument to mkstrip must be a string or list, got: "+t)
result = ""
was_space = False
for ch in s.strip().elems():
@@ -879,6 +885,7 @@
findstring = _findstring,
first_word = _first_word,
last_word = _last_word,
+ flatten_2d_list = _flatten_2d_list,
inherit = _inherit,
indirect = _indirect,
mk2rbc_error = _mk2rbc_error,
diff --git a/tests/run.rbc b/tests/run.rbc
index 107be09..c6dfeba 100644
--- a/tests/run.rbc
+++ b/tests/run.rbc
@@ -43,7 +43,7 @@
assert_eq("", rblf.mkstrip(" \n \t "))
assert_eq("a b c", rblf.mkstrip(" a b \n c \t"))
-assert_eq(1, rblf.mkstrip(1))
+assert_eq("1", rblf.mkstrip("1 "))
assert_eq("b1 b2", rblf.mksubst("a", "b", "a1 a2"))
assert_eq(["b1", "x2"], rblf.mksubst("a", "b", ["a1", "x2"]))
@@ -90,6 +90,10 @@
assert_eq("", rblf.last_word(""))
assert_eq("", rblf.last_word([]))
+assert_eq(["foo", "bar"], rblf.flatten_2d_list([["foo", "bar"]]))
+assert_eq(["foo", "bar"], rblf.flatten_2d_list([["foo"], ["bar"]]))
+assert_eq([], rblf.flatten_2d_list([]))
+
assert_eq(
["build/make/tests/board.rbc", "build/make/tests/board_input_vars.rbc"],
rblf.expand_wildcard("build/make/tests/board*.rbc")