--
-- tprint.lua
--[[
For debugging what tables have in them, prints recursively
See forum thread: http://www.gammon.com.au/forum/?id=4903
eg.
require "tprint"
tprint (some_table)
--]]
module("tprint", package.seeall)
function print (t, indent, done)
-- show strings differently to distinguish them from numbers
local function show (val)
if type (val) == "string" then
return '"' .. val .. '"'
else
return tostring (val)
end -- if
end -- show
if type (t) ~= "table" then
send ("tprint got " .. type (t))
return
end -- not table
-- entry point here
done = done or {}
indent = indent or 0
for key, value in pairs (t) do
nsend (string.rep (" ", indent)) -- indent it
if type (value) == "table" and not done [value] then
done [value] = true
send (show (key), ":");
tprint (value, indent + 2, done)
else
nsend (show (key), "=")
send (show (value))
end
end
end
return tprint