diff options
| author | ruki <[email protected]> | 2019-06-12 22:33:22 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-06-12 09:20:15 +0800 |
| commit | 17332ad1070bb6190bcd24f0a96cca823b4d8d26 (patch) | |
| tree | 532680082206049d3c22d74025052cb705a37c86 | |
| parent | afac15c89d291e7f5855f4fec4b2ed3ca816b8a4 (diff) | |
improve string.rtrim and cl output
| -rw-r--r-- | tests/modules/string/test.lua | 24 | ||||
| -rw-r--r-- | xmake/core/base/string.lua | 4 | ||||
| -rw-r--r-- | xmake/modules/core/tools/cl.lua | 6 |
3 files changed, 29 insertions, 5 deletions
diff --git a/tests/modules/string/test.lua b/tests/modules/string/test.lua index 04ee715ca..fbbadde08 100644 --- a/tests/modules/string/test.lua +++ b/tests/modules/string/test.lua @@ -13,6 +13,30 @@ function test_startswith(t) t:require_not((" aaaccc"):startswith("%s")) end +function test_trim(t) + t:are_equal((" aaa ccc "):trim(), "aaa ccc") + t:are_equal(("aaa ccc "):trim(), "aaa ccc") + t:are_equal((" aaa ccc"):trim(), "aaa ccc") + t:are_equal(("aaa ccc"):trim(), "aaa ccc") + t:are_equal(("\t\naaa ccc\r\n"):trim(), "aaa ccc") +end + +function test_ltrim(t) + t:are_equal((" aaa ccc "):ltrim(), "aaa ccc ") + t:are_equal(("aaa ccc "):ltrim(), "aaa ccc ") + t:are_equal((" aaa ccc"):ltrim(), "aaa ccc") + t:are_equal(("aaa ccc"):ltrim(), "aaa ccc") + t:are_equal(("\t\naaa ccc\r\n"):ltrim(), "aaa ccc\r\n") +end + +function test_rtrim(t) + t:are_equal((" aaa ccc "):rtrim(), " aaa ccc") + t:are_equal(("aaa ccc "):rtrim(), "aaa ccc") + t:are_equal((" aaa ccc"):rtrim(), " aaa ccc") + t:are_equal(("aaa ccc"):rtrim(), "aaa ccc") + t:are_equal(("\t\naaa ccc\r\n"):rtrim(), "\t\naaa ccc") +end + function test_split(t) -- pattern match and ignore empty string t:are_equal(("1\n\n2\n3"):split('\n'), {"1", "2", "3"}) diff --git a/xmake/core/base/string.lua b/xmake/core/base/string.lua index 13ca6c1fb..558344d7f 100644 --- a/xmake/core/base/string.lua +++ b/xmake/core/base/string.lua @@ -200,9 +200,7 @@ end -- trim the right spaces function string:rtrim() - local n = #self - while n > 0 and s:find("^%s", n) do n = n - 1 end - return self:sub(1, n) + return (self:gsub("%s*$", "")) end -- encode: ' ', '=', '\"', '<' diff --git a/xmake/modules/core/tools/cl.lua b/xmake/modules/core/tools/cl.lua index 4f3545988..480d32a03 100644 --- a/xmake/modules/core/tools/cl.lua +++ b/xmake/modules/core/tools/cl.lua @@ -410,7 +410,8 @@ function _compile1(self, sourcefile, objectfile, dependinfo, flags) -- filter includes notes: "Note: including file: xxx.h", @note maybe not english language local results = "" - for _, line in ipairs(tostring(errors):split("\r\n", {plain = true})) do + for _, line in ipairs(tostring(errors):split("\n", {plain = true})) do + line = line:rtrim() if not _include_note(self, line) then results = results .. line .. "\r\n" end @@ -430,7 +431,8 @@ function _compile1(self, sourcefile, objectfile, dependinfo, flags) end if #output:trim() > 0 then local lines = {} - for _, line in ipairs(output:split("\r\n", {plain = true})) do + for _, line in ipairs(output:split("\n", {plain = true})) do + line = line:rtrim() if line:match("warning %a+[0-9]+%s*:") then table.insert(lines, line) end |
