While creating a program that uses Lua tables, I found it troublesome to check values, so I created this.
It is convenient to save it with a name such as dprt.lua and use it by including it.
--If you no longer need the debug display, you can disable it all together --by changing DEBUG_FLG to false. --Also, if you want to display it on the host, set DEBUG_TO_HOST to true DEBUG_FLG = true DEBUG_TO_HOST = true function dprt(v) local function dbg(v) local buf, t, i = "", type(v), 0 if t == "table" then buf = "table{" for i in pairs(v) do if v[i] != nil then buf = string.format("%s \n\t%s: %s", buf, i,dbg(v[i])) end end buf = string.format("%s \n},", buf) elseif t == "userdata" then buf = "userdata{" for i=0,#v-1 do buf = string.format("%s %s: %s", buf, i, dbg(v[i])) end buf = string.format("%s \n},", buf) elseif t == "number" then buf = string.format("%s,", v) elseif t == "string" then buf = string.format("'%s',", v) elseif t == "boolean" then if v then buf = "true," else buf = "false," end elseif t == "function" then buf = "function{" local info = debug.getinfo(v) for i in pairs(info) do buf = string.format("%s, %s: %s", buf, i, info[i]) end buf = string.format("%s },", buf) elseif t == "nil" then buf = "nil," end return buf end if DEBUG_FLG != true then return "" end if DEBUG_TO_HOST == true then printh(dbg(v)) else print(dbg(v)) end end |
For example, you can use it like this:
on_event("mouse", function(msg) dprt(msg) end) |
[Please log in to post a comment]