mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 16:34:45 +00:00
86 lines
1.8 KiB
Lua
86 lines
1.8 KiB
Lua
--Cache global variables
|
|
local error = error
|
|
local geterrorhandler = geterrorhandler
|
|
local pairs = pairs
|
|
local pcall = pcall
|
|
local securecall = securecall
|
|
local select = select
|
|
local tostring = tostring
|
|
local type = type
|
|
local unpack = unpack
|
|
|
|
function table.wipe(t)
|
|
assert(type(t) == "table", format("bad argument #1 to 'wipe' (table expected, got %s)", t and type(t) or "no value"))
|
|
|
|
for k in pairs(t) do
|
|
t[k] = nil
|
|
end
|
|
|
|
return t
|
|
end
|
|
wipe = table.wipe
|
|
|
|
local LOCAL_ToStringAllTemp = {}
|
|
function tostringall(...)
|
|
local n = select('#', ...)
|
|
-- Simple versions for common argument counts
|
|
if (n == 1) then
|
|
return tostring(...)
|
|
elseif (n == 2) then
|
|
local a, b = ...
|
|
return tostring(a), tostring(b)
|
|
elseif (n == 3) then
|
|
local a, b, c = ...
|
|
return tostring(a), tostring(b), tostring(c)
|
|
elseif (n == 0) then
|
|
return
|
|
end
|
|
|
|
local needfix
|
|
for i = 1, n do
|
|
local v = select(i, ...)
|
|
if (type(v) ~= "string") then
|
|
needfix = i
|
|
break
|
|
end
|
|
end
|
|
if (not needfix) then return ... end
|
|
|
|
wipe(LOCAL_ToStringAllTemp)
|
|
for i = 1, needfix - 1 do
|
|
LOCAL_ToStringAllTemp[i] = select(i, ...)
|
|
end
|
|
for i = needfix, n do
|
|
LOCAL_ToStringAllTemp[i] = tostring(select(i, ...))
|
|
end
|
|
return unpack(LOCAL_ToStringAllTemp)
|
|
end
|
|
|
|
local LOCAL_PrintHandler = function(...)
|
|
DEFAULT_CHAT_FRAME:AddMessage(strjoin(" ", tostringall(...)))
|
|
end
|
|
|
|
function setprinthandler(func)
|
|
if (type(func) ~= "function") then
|
|
error("Invalid print handler")
|
|
else
|
|
LOCAL_PrintHandler = func
|
|
end
|
|
end
|
|
|
|
function getprinthandler() return LOCAL_PrintHandler end
|
|
|
|
local function print_inner(...)
|
|
local ok, err = pcall(LOCAL_PrintHandler, ...)
|
|
if (not ok) then
|
|
local func = geterrorhandler()
|
|
func(err)
|
|
end
|
|
end
|
|
|
|
function print(...)
|
|
securecall(pcall, print_inner, ...)
|
|
end
|
|
|
|
SLASH_PRINT1 = "/print"
|
|
SlashCmdList["PRINT"] = print |