diff options
| author | Opportunity <[email protected]> | 2020-01-15 12:06:01 +0800 |
|---|---|---|
| committer | Opportunity <[email protected]> | 2020-01-15 12:06:01 +0800 |
| commit | f4e30b5e7879d4dbfbe4424f5f9156cb6cfdaf50 (patch) | |
| tree | bbd6789a15b4ffbe2040eba9dd61a047f92b2fcc /xmake/core | |
| parent | 9862d1b95fa5978eaf24d65f1ca5f151d410a14b (diff) | |
Improve dump
Diffstat (limited to 'xmake/core')
| -rw-r--r-- | xmake/core/base/dump.lua | 14 | ||||
| -rw-r--r-- | xmake/core/base/utils.lua | 21 |
2 files changed, 18 insertions, 17 deletions
diff --git a/xmake/core/base/dump.lua b/xmake/core/base/dump.lua index 3adb54133..5e7ed9b8f 100644 --- a/xmake/core/base/dump.lua +++ b/xmake/core/base/dump.lua @@ -88,17 +88,27 @@ function dump._print_function(func, as_key) end -- print value with default format -function dump._print_default(value) +function dump._print_default_scalar(value) io.write(dump._translate("${reset}${color.dump.default}"), dump._format("text.dump.default_format", "%s", value), dump._translate("${reset}")) end -- print udata value with scalar format function dump._print_udata_scalar(value) + local metatable = debug.getmetatable(value) + local tostringmethod = metatable and (rawget(metatable, "__todisplay") or rawget(metatable, "__tostring")) + if tostringmethod then + value = tostringmethod(value) + end io.write(dump._translate("${reset}${color.dump.udata}"), dump._format("text.dump.udata_format", "%s", value), dump._translate("${reset}")) end -- print table value with scalar format function dump._print_table_scalar(value) + local metatable = debug.getmetatable(value) + local tostringmethod = metatable and (rawget(metatable, "__todisplay") or rawget(metatable, "__tostring")) + if tostringmethod then + value = tostringmethod(value) + end io.write(dump._translate("${reset}${color.dump.table}"), dump._format("text.dump.table_format", "%s", value), dump._translate("${reset}")) end @@ -117,7 +127,7 @@ function dump._print_scalar(value, as_key) elseif type(value) == "table" then dump._print_table_scalar(value) else - dump._print_default(value) + dump._print_default_scalar(value) end end diff --git a/xmake/core/base/utils.lua b/xmake/core/base/utils.lua index ca13ab097..fa42d7e25 100644 --- a/xmake/core/base/utils.lua +++ b/xmake/core/base/utils.lua @@ -29,7 +29,7 @@ local log = require("base/log") local io = require("base/io") local dump = require("base/dump") --- dump value +-- dump values function utils.dump(...) if option.get("quiet") then return ... @@ -49,25 +49,16 @@ function utils.dump(...) if values.n == 0 then return end - local indent = nil - local values_count = values.n - values.n = nil - -- use last input as indent if it is a string - if values_count > 1 and type(values[values_count]) == "string" then - indent = values[values_count] - values[values_count] = nil - values_count = values_count - 1 - end - if values_count == 1 then - dump(values[1], indent or "", diagnosis) + if values.n == 1 then + dump(values[1], "", diagnosis) else - for i = 1, values_count do - dump(values[i], indent or string.format("%2d: ", i), diagnosis) + for i = 1, values.n do + dump(values[i], string.format("%2d: ", i), diagnosis) end end - return table.unpack(values, 1, values_count) + return table.unpack(values, 1, values.n) end -- print string with newline |
