diff options
| author | ruki <[email protected]> | 2015-05-12 11:31:12 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-05-12 11:31:12 +0800 |
| commit | 97e6e62e5061f029b1195784671dea9d19211782 (patch) | |
| tree | d29e8b9efb6b5f2be5b5495cc510f35d5587de15 /xmake/scripts/base/utils.lua | |
| parent | fc66b05d2d238830106890447db7ed3808375de1 (diff) | |
load and save configs for the given target
Diffstat (limited to 'xmake/scripts/base/utils.lua')
| -rw-r--r-- | xmake/scripts/base/utils.lua | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/xmake/scripts/base/utils.lua b/xmake/scripts/base/utils.lua index 4cad25de0..f6af24e9b 100644 --- a/xmake/scripts/base/utils.lua +++ b/xmake/scripts/base/utils.lua @@ -50,5 +50,82 @@ function utils.ifelse(a, b, c) if a then return b else return c end end +-- dump object with the level +function utils._dump_with_level(object, level) + + -- check + assert(object) + + -- dump string + if type(object) == "string" then + io.write(string.format("%q", object)) + -- dump boolean + elseif type(object) == "boolean" then + io.write(tostring(object)) + -- dump number + elseif type(object) == "number" then + io.write(object) + -- dump table + elseif type(object) == "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(object) do + + -- dump spaces + for l = 1, level do + io.write(" ") + end + + -- dump separator + io.write(utils.ifelse(i == 0, " ", ", "), k, " = ") + + -- dump this key: value + if not utils._dump_with_level(v, level + 1) then + return false + end + + -- dump newline + io.write("\n") + i = i + 1 + end + + -- dump tail + for l = 1, level do + io.write(" ") + end + io.write("}\n") + else + -- error + utils.error("invalid object type: %s", type(object)) + return false + end + + -- ok + return true +end + +-- dump object +function utils.dump(object, prefix) + + -- dump prefix + if prefix and type(prefix) == "string" then + io.write(prefix) + end + + -- dump it + utils._dump_with_level(object, 0) + + -- return it + return object +end + -- return module: utils return utils |
