Add mksort implementation
Bug: 218736658 Test: ./out/rbcrun ./build/make/tests/run.rbc Change-Id: I0069e7059453c16d299cc650f56c320d905f1958
This commit is contained in:
parent
52233be25c
commit
2491ad52c1
|
@ -676,6 +676,20 @@ def _mkpatsubst(pattern, replacement, s):
|
|||
return out_words if type(s) == "list" else " ".join(out_words)
|
||||
|
||||
|
||||
def _mksort(input):
|
||||
"""Emulate Make's sort.
|
||||
|
||||
This is unique from a regular sort in that it also strips
|
||||
the input, and removes duplicate words from the input.
|
||||
"""
|
||||
input = sorted(__words(input))
|
||||
result = []
|
||||
for w in input:
|
||||
if len(result) == 0 or result[-1] != w:
|
||||
result.append(w)
|
||||
return result
|
||||
|
||||
|
||||
def _mkstrip(s):
|
||||
"""Emulates Make's strip.
|
||||
|
||||
|
@ -785,6 +799,7 @@ rblf = struct(
|
|||
mkerror = _mkerror,
|
||||
mkpatsubst = _mkpatsubst,
|
||||
mkwarning = _mkwarning,
|
||||
mksort = _mksort,
|
||||
mkstrip = _mkstrip,
|
||||
mksubst = _mksubst,
|
||||
notdir = _notdir,
|
||||
|
|
|
@ -32,6 +32,9 @@ def assert_eq(expected, actual):
|
|||
fail("Expected '%s', got '%s'" % (expected, actual))
|
||||
|
||||
# Unit tests for non-trivial runtime functions
|
||||
assert_eq(["a", "b", "c"], rblf.mksort("b a c c"))
|
||||
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))
|
||||
|
|
Loading…
Reference in New Issue