Added dumptable.lua
authorRyan C. Gordon <icculus@icculus.org>
Mon, 23 Dec 2013 20:41:24 -0500
changeset 13 7b82873f8f94
parent 12 6a2d5b34d5ca
child 14 f359fb8eec3c
Added dumptable.lua
dumptable.lua
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dumptable.lua	Mon Dec 23 20:41:24 2013 -0500
@@ -0,0 +1,42 @@
+function dumptable(tabname, tab, depth)
+    if depth == nil then  -- first call, before any recursion?
+        depth = 1
+    end
+
+    if tabname ~= nil then
+        if tab == nil then
+            print(tabname .. " = nil")
+            return
+        else
+            print(tabname .. " = {")
+        end
+    end
+
+    local depthstr = ""
+    for i=1,(depth*4) do
+        depthstr = depthstr .. " "
+    end
+
+    if tab.DUMPTABLE_ITERATED then
+        print(depthstr .. "(...circular reference...)")
+    else
+        tab.DUMPTABLE_ITERATED = true
+        for k,v in pairs(tab) do
+            if type(v) == "table" then
+                print(depthstr .. tostring(k) .. " = {")
+                dumptable(nil, v, depth + 1)
+                print(depthstr .. "}")
+            else
+                if k ~= "DUMPTABLE_ITERATED" then
+                    print(depthstr .. tostring(k) .. " = " .. tostring(v))
+                end
+            end
+        end
+        tab.DUMPTABLE_ITERATED = nil
+    end
+
+    if tabname ~= nil then
+        print("}")
+    end
+end
+