view Utility.lua @ 69:b7352f007028

Working on bids/rolls in the GUI Added debug mode to populate things with dummy data.
author John@Yosemite-PC
date Thu, 29 Mar 2012 20:17:59 -0400
parents 619e4b9c3cd9
children 790266dbcaff
line wrap: on
line source
local bsk=bsk
local pairs=pairs
local tostring=tostring
local type=type
local table=table
local getmetatable=getmetatable
local setmetatable=setmetatable

setfenv(1,bsk)

-- These two functions properly format the call to AceConsole:Print(), which
-- needs a full object. Calling "Print" will call the mixed-in console functions
-- but without a self parameter because of the namespacing. I would disembed
-- console, except that it has handy OnDisable behavior to disable chat
-- commands.
function print(...)
    bsk:Print(...)
end

function printf(...)
    bsk:Printf(...)
end

function tcopy(to, from)
  for k,v in pairs(from) do
    if(type(v)=="table") then
      to[k] = {}
      tcopy(to[k], v);
    else
      to[k] = v;
    end
  end
end

function shallowCopy(t)
  local u = { }
  for k, v in pairs(t) do u[k] = v end
  return setmetatable(u, getmetatable(t))
end

function PrintTable(tabl, depth, history)
    depth = depth or ""
    history = history or {}
    if not tabl then return end
    if #depth > 3*5 then print(depth.."Recursion too deep - stopping"); return end
    for i,v in pairs(tabl) do 
        if( type(v) == "string" ) then
            print(depth .. i ..  " - " .. v) 
        elseif( type(v) == "number" ) then
            print(depth .. i .. " - " .. tostring(v))
        elseif( type(v) == "table" ) then
            --if v == table then return end
            print(depth .. tostring(i) .." - ") 
            if history then
                for i,vh in pairs(history) do
                    if vh==tabl then
                        print(depth.. " - circular reference detected; halting print")
                        return
                    end
                end
            end
            table.insert(history,tabl)
            PrintTable(v,depth.."   ",history)
            table.remove(history)
        elseif( type(v) == "boolean" ) then
            print(depth .. i .. " - " .. tostring(v))
        elseif( type(v) == "function" ) then
            print(depth .. "function " .. i .. "()")
        else
            print(depth .. i .. " - not sure how to print type: " .. type(v) )
        end
    end
end