Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 475b885a authored by Cole Faust's avatar Cole Faust Committed by Gerrit Code Review
Browse files

Merge "Add mksort implementation"

parents d8cf9a5a 2491ad52
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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,
+3 −0
Original line number Diff line number Diff line
@@ -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))