1 -- Minetest: builtin/misc_helpers.lua
3 function basic_dump2(o)
4 if type(o) == "number" then
6 elseif type(o) == "string" then
7 return string.format("%q", o)
8 elseif type(o) == "boolean" then
10 elseif type(o) == "function" then
12 elseif type(o) == "userdata" then
14 elseif type(o) == "nil" then
17 error("cannot dump a " .. type(o))
22 function dump2(o, name, dumped)
26 if type(o) == "number" or type(o) == "string" or type(o) == "boolean"
27 or type(o) == "function" or type(o) == "nil"
28 or type(o) == "userdata" then
29 io.write(basic_dump2(o), "\n")
30 elseif type(o) == "table" then
32 io.write(dumped[o], "\n")
35 io.write("{}\n") -- new table
36 for k,v in pairs(o) do
37 local fieldname = string.format("%s[%s]", name, basic_dump2(k))
38 dump2(v, fieldname, dumped)
42 error("cannot dump a " .. type(o))
47 function dump(o, dumped)
49 if type(o) == "number" then
51 elseif type(o) == "string" then
52 return string.format("%q", o)
53 elseif type(o) == "table" then
55 return "<circular reference>"
59 for k,v in pairs(o) do
60 t[#t+1] = "" .. k .. " = " .. dump(v, dumped)
62 return "{" .. table.concat(t, ", ") .. "}"
63 elseif type(o) == "boolean" then
65 elseif type(o) == "function" then
67 elseif type(o) == "userdata" then
69 elseif type(o) == "nil" then
72 error("cannot dump a " .. type(o))
77 function string:split(sep)
78 local sep, fields = sep or ",", {}
79 local pattern = string.format("([^%s]+)", sep)
80 self:gsub(pattern, function(c) fields[#fields+1] = c end)
84 function string:trim()
85 return (self:gsub("^%s*(.-)%s*$", "%1"))
88 assert(string.trim("\n \t\tfoo bar\t ") == "foo bar")
90 function minetest.pos_to_string(pos)
91 return "(" .. pos.x .. "," .. pos.y .. "," .. pos.z .. ")"