Add function for flattening 2d lists

Bug: 226974242
Test: ./out/rbcrun ./build/make/tests/run.rbc
Change-Id: Iae977b34ca0ac156ec795c54f4951c769fa994dd
This commit is contained in:
Cole Faust 2022-05-05 11:38:26 -07:00
parent de1949b562
commit 6f6060a358
2 changed files with 13 additions and 2 deletions

View file

@ -619,6 +619,12 @@ def _last_word(input):
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 @@ def _mkstrip(s):
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 @@ rblf = struct(
findstring = _findstring,
first_word = _first_word,
last_word = _last_word,
flatten_2d_list = _flatten_2d_list,
inherit = _inherit,
indirect = _indirect,
mk2rbc_error = _mk2rbc_error,

View file

@ -43,7 +43,7 @@ assert_eq(["a", "b", "c"], rblf.mksort(["b", "a", "c", "c"]))
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("bar", rblf.last_word(["foo", "bar"]))
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")