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

Commit be4ebca4 authored by Sasha Smundak's avatar Sasha Smundak
Browse files

Add mkstrip

Bug: 181797530
Test: rbcrun build/make/tests/run.rbc
Change-Id: I6b7ade400273cf5a4fd561322e8e9936bc9d8df6
parent 42b072f4
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -62,7 +62,8 @@ def __print_attr(attr, value):
    elif _options.format == "pretty":
        print(attr, "=", repr(value))
    elif _options.format == "make":
        print(attr, ":=", value)
        # Trim all spacing to a single space
        print(attr, ":=", _mkstrip(value))
    else:
        fail("bad output format", _options.format)

@@ -432,6 +433,23 @@ def _mkinfo(file, message = ""):
    """Prints info."""
    print(message)

def _mkstrip(s):
    """Emulates Make's strip.

    That is, removes string's leading and trailing whitespace characters and
    replaces any sequence of whitespace characters with with a single space.
    """
    result = ""
    was_space = False
    for ch in s.strip().elems():
        is_space = ch.isspace()
        if not is_space:
            if was_space:
                result += " "
            result += ch
        was_space = is_space
    return result

def __get_options():
    """Returns struct containing runtime global settings."""
    settings = dict(
@@ -479,6 +497,7 @@ rblf = struct(
    mkinfo = _mkinfo,
    mkerror = _mkerror,
    mkwarning = _mkwarning,
    mkstrip = _mkstrip,
    printvars = _printvars,
    product_configuration = _product_configuration,
    require_artifacts_in_path = _require_artifacts_in_path,
+3 −1
Original line number Diff line number Diff line

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,6 +27,9 @@ def assert_eq(expected, actual):
    if expected != actual:
        fail("Expected %s, got %s" % (expected, actual))

# Unit tests for non-trivial runtime functions
assert_eq("", rblf.mkstrip(" \n \t    "))
assert_eq("a b c", rblf.mkstrip("  a b   \n  c \t"))

globals, config = rblf.product_configuration("test/device", init)
assert_eq(