diff options
| author | ruki <[email protected]> | 2016-03-18 10:40:57 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2016-03-18 10:40:57 +0800 |
| commit | 8f5125ae1329d24b5265c4cb45b1890c3f175e60 (patch) | |
| tree | 9c66f71fe62c5232c1ce93a35195377bae46f130 /xmake/core/base/table.lua | |
| parent | dbb2fe806d1e3232c418fb47351dd8d8354e2ca2 (diff) | |
rename utils.dump
Diffstat (limited to 'xmake/core/base/table.lua')
| -rw-r--r-- | xmake/core/base/table.lua | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/xmake/core/base/table.lua b/xmake/core/base/table.lua index 363f6efe0..940a05f50 100644 --- a/xmake/core/base/table.lua +++ b/xmake/core/base/table.lua @@ -154,5 +154,97 @@ function table.is_dictionary(self) return false end +-- dump it with the level +function table._dump(self, exclude, level) + + -- dump string + if type(self) == "string" then + io.write(string.format("%q", self)) + -- dump boolean + elseif type(self) == "boolean" then + io.write(tostring(self)) + -- dump number + elseif type(self) == "number" then + io.write(self) + -- dump function + elseif type(self) == "function" then + io.write("<function>") + -- dump table + elseif type(self) == "table" then + + -- dump head + io.write("\n") + for l = 1, level do + io.write(" ") + end + io.write("{\n") + + -- dump body + local i = 0 + for k, v in pairs(self) do + + -- exclude some keys + if not exclude or type(k) ~= "string" or not k:find(exclude) then + + -- dump spaces and separator + for l = 1, level do + io.write(" ") + end + + if i == 0 then + io.write(" ") + else + io.write(", ") + end + + -- dump key + if type(k) == "string" then + io.write(k, " = ") + end + + -- dump value + if not table._dump(v, exclude, level + 1) then + return false + end + + -- dump newline + io.write("\n") + i = i + 1 + end + end + + -- dump tail + for l = 1, level do + io.write(" ") + end + io.write("}\n") + -- dump userdata + elseif type(self) == "userdata" then + io.write("<userdata>") + else + -- error + print("error: invalid object type: %s", type(self)) + return false + end + + -- ok + return true +end + +-- dump it +function table.dump(self, exclude, prefix) + + -- dump prefix + if prefix then + io.write(prefix) + end + + -- dump it + table._dump(self, exclude, 0) + + -- return it + return self +end + -- return module: table return table |
