From 6f6060a3583ac6e06375cc88798865bf2c360ee9 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Thu, 5 May 2022 11:38:26 -0700 Subject: [PATCH] Add function for flattening 2d lists Bug: 226974242 Test: ./out/rbcrun ./build/make/tests/run.rbc Change-Id: Iae977b34ca0ac156ec795c54f4951c769fa994dd --- core/product_config.rbc | 9 ++++++++- tests/run.rbc | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/product_config.rbc b/core/product_config.rbc index f67ba8e8df..7a5e50110b 100644 --- a/core/product_config.rbc +++ b/core/product_config.rbc @@ -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, diff --git a/tests/run.rbc b/tests/run.rbc index 107be0995a..c6dfeba405 100644 --- a/tests/run.rbc +++ b/tests/run.rbc @@ -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")