From c93109dc36d2a29904002f9b28451683d6680b87 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Wed, 27 Apr 2022 17:50:55 -0700 Subject: [PATCH] Add implementations for firstword/lastword Bug: 226974242 Test: ./out/rbcrun ./build/make/tests/run.rbc Change-Id: Ibb992f42a59212bae48acd55647b2d0872c2f69e --- core/product_config.rbc | 17 +++++++++++++++++ tests/run.rbc | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/core/product_config.rbc b/core/product_config.rbc index 52aaf04a04..1941a3240b 100644 --- a/core/product_config.rbc +++ b/core/product_config.rbc @@ -605,6 +605,21 @@ def _filter(pattern, text): break return res +def _first_word(input): + """Equivalent to the GNU make function $(firstword).""" + input = __words(input) + if len(input) == 0: + return "" + return input[0] + +def _last_word(input): + """Equivalent to the GNU make function $(lastword).""" + input = __words(input) + l = len(input) + if l == 0: + return "" + return input[l-1] + def _dir(paths): """Equivalent to the GNU make function $(dir). @@ -862,6 +877,8 @@ rblf = struct( filter_out = _filter_out, find_and_copy = _find_and_copy, findstring = _findstring, + first_word = _first_word, + last_word = _last_word, inherit = _inherit, indirect = _indirect, mk2rbc_error = _mk2rbc_error, diff --git a/tests/run.rbc b/tests/run.rbc index 2d35e85e81..107be0995a 100644 --- a/tests/run.rbc +++ b/tests/run.rbc @@ -81,6 +81,15 @@ assert_eq("/foo/baz", rblf.abspath("/foo/bar/../baz")) assert_eq(cwd+"/foo/bar "+cwd+"/foo/baz", rblf.abspath("foo/bar foo/baz")) assert_eq("/baz", rblf.abspath("/../../../../../../../../../../../../../../../../baz")) +assert_eq("foo", rblf.first_word("foo bar")) +assert_eq("foo", rblf.first_word(["foo", "bar"])) +assert_eq("", rblf.first_word("")) +assert_eq("", rblf.first_word([])) +assert_eq("bar", rblf.last_word("foo bar")) +assert_eq("bar", rblf.last_word(["foo", "bar"])) +assert_eq("", rblf.last_word("")) +assert_eq("", rblf.last_word([])) + assert_eq( ["build/make/tests/board.rbc", "build/make/tests/board_input_vars.rbc"], rblf.expand_wildcard("build/make/tests/board*.rbc")