summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-06-12 22:33:22 +0800
committerruki <[email protected]>2019-06-12 09:20:15 +0800
commit17332ad1070bb6190bcd24f0a96cca823b4d8d26 (patch)
tree532680082206049d3c22d74025052cb705a37c86
parentafac15c89d291e7f5855f4fec4b2ed3ca816b8a4 (diff)
improve string.rtrim and cl output
-rw-r--r--tests/modules/string/test.lua24
-rw-r--r--xmake/core/base/string.lua4
-rw-r--r--xmake/modules/core/tools/cl.lua6
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