view Utility.lua @ 45:8d3187b12443

Start of sketch of a List object
author John@Yosemite-PC
date Thu, 15 Mar 2012 23:50:49 -0400
parents 8913e7d79cad
children 8856fc38cd41
line wrap: on
line source
local pairs=pairs
local type=type
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(table, depth)
    depth = depth or ""
    if not table then return end
    if #depth > 3*5 then print(depth.."Recursion too deep - stopping"); return end
    for i,v in pairs(table) 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
            print(depth .. i .." - ") 
            PrintTable(v,depth.."   ")
        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