vanilla-wow-addons – Rev 1
?pathlinks?
local compost = CompostLib:GetInstance('compost-1')
local COLOR_HEX_RED = "ff0000"
local COLOR_HEX_ORANGE = "ff7f00"
local COLOR_HEX_YELLOW = "ffff00"
local COLOR_HEX_GREEN = "00ff00"
local COLOR_HEX_WHITE = "ffffff"
local COLOR_HEX_COPPER = "eda55f"
local COLOR_HEX_SILVER = "c7c7cf"
local COLOR_HEX_GOLD = "ffd700"
local function VersionToNumber(version)
if version == nil then
return 0
elseif type(version) == "number" then
return version
end
local num = 0
local place = 1
string.gsub(version, "(%d+)", function (w)
num = num + tonumber(w) * math.pow(10, place * 2)
if place > 0 then
place = place - 1
else
place = place - 2
end
end)
return num
end
local function GetVersionPoint(version, point)
if version == nil then
return 0
elseif type(version) == "number" then
if point == 1 then
return floor(version / 100)
elseif point == 2 then
return mod(floor(version), 100)
elseif point == 3 then
return mod(floor(version * 10000), 10000)
elseif point == 4 then
return mod(floor(version * 100000000), 10000)
elseif point < 1 then
return 0
elseif point > 4 then
return mod(floor(version * math.pow(10000, point - 2)), 10000)
end
end
local place = 1
local num = 0
string.gsub(version, "(%d+)", function (w)
if place == point
then num = tonumber(w)
return
end
place = place + 1
end)
return num
end
local function GetMajorNumber(version)
return GetVersionPoint(version, 1)
end
local function GetMinorNumber(version)
return GetVersionPoint(version, 2)
end
local function GetRevisionNumber(version)
return GetVersionPoint(version, 3)
end
local function GetTrivialNumber(version)
return GetVersionPoint(version, 4)
end
local crayon = CrayonLib:GetInstance('1.0')
local abacus = AbacusLib:GetInstance('1.0')
FuBarUtils = {
COLOR_HEX_RED = crayon.COLOR_HEX_RED,
COLOR_HEX_ORANGE = crayon.COLOR_HEX_ORANGE,
COLOR_HEX_YELLOW = crayon.COLOR_HEX_YELLOW,
COLOR_HEX_GREEN = crayon.COLOR_HEX_GREEN,
COLOR_HEX_WHITE = crayon.COLOR_HEX_WHITE,
COLOR_HEX_COPPER = crayon.COLOR_HEX_COPPER,
COLOR_HEX_SILVER = crayon.COLOR_HEX_SILVER,
COLOR_HEX_GOLD = crayon.COLOR_HEX_GOLD,
Colorize = function(hexColor, text)
return crayon:Colorize(hexColor, text)
end,
Red = function(text)
return crayon:Red(text)
end,
Orange = function(text)
return crayon:Orange(text)
end,
Yellow = function(text)
return crayon:Yellow(text)
end,
Green = function(text)
return crayon:Green(text)
end,
White = function(text)
return crayon:White(text)
end,
GetThresholdHexColor = function(quality, a, b, c, d, e)
return crayon:GetThresholdHexColor(quality, a, b, c, d, e)
end,
GetThresholdColor = function(quality, a, b, c, d, e)
return crayon:GetThresholdColor(quality, a, b, c, d, e)
end,
GetThresholdHexColorTrivial = function(quality, a, b, c, d, e)
return crayon:GetThresholdHexColorTrivial(quality, a, b, c, d, e)
end,
GetThresholdColorTrivial = function(quality, a, b, c, d, e)
return crayon:GetThresholdColorTrivial(quality, a, b, c, d, e)
end,
FormatMoneyExtended = function(value, colorize, textColor)
return abacus:FormatMoneyExtended(value, colorize, textColor)
end,
FormatMoneyFull = function(value, colorize, textColor)
return abacus:FormatMoneyFull(value, colorize, textColor)
end,
FormatMoneyShort = function(value, colorize, textColor)
return abacus:FormatMoneyShort(value, colorize, textColor)
end,
FormatMoneyCondensed = function(value, colorize, textColor)
return abacus:FormatMoneyCondensed(value, colorize, textColor)
end,
FormatDurationExtended = function(duration, colorize, hideSeconds)
return abacus:FormatDurationExtended(duration, colorize, hideSeconds)
end,
FormatDurationFull = function(duration, colorize, hideSeconds)
return abacus:FormatDurationFull(duration, colorize, hideSeconds)
end,
FormatDurationShort = function(duration, colorize, hideSeconds)
return abacus:FormatDurationShort(duration, colorize, hideSeconds)
end,
FormatDurationCondensed = function(duration, colorize, hideSeconds)
return abacus:FormatDurationCondensed(duration, colorize, hideSeconds)
end,
VersionToNumber = VersionToNumber,
GetVersionPoint = GetVersionPoint,
GetMajorNumber = GetMajorNumber,
GetMinorNumber = GetMinorNumber,
GetRevisionNumber = GetRevisionNumber,
GetTrivialNumber = GetTrivialNumber,
}
local old_UIDropDownMenu_AddButton = UIDropDownMenu_AddButton
local spacerDropDown = nil
function FuBarUtils.AddSpacerDropDownMenu(level)
if spacerDropDown ~= (level or 1) then
spacerDropDown = level or 1
local info = compost:AcquireHash(
'disabled', true
)
old_UIDropDownMenu_AddButton(info, level or 1)
compost:Reclaim(info)
end
end
UIDropDownMenu_AddButton = function(info, level)
spacerDropDown = nil
old_UIDropDownMenu_AddButton(info, level)
end
local old_ToggleDropDownMenu = ToggleDropDownMenu
ToggleDropDownMenu = function(level, value, dropDownFrame, anchorName, xOffset, yOffset)
spacerDropDown = nil
old_ToggleDropDownMenu(level, value, dropDownFrame, anchorName, xOffset, yOffset)
end
print = function(...)
local s = ""
for i = 1, table.getn(arg) do
if s ~= "" then
s = s .. " "
end
if type(arg[i]) == "table" and type(arg[i][0]) == "userdata" then
local name = arg[i]:GetName()
if name == "" or name == nil then
name = ""
else
name = ":" .. name
end
s = s .. "<" .. arg[i]:GetObjectType() .. name .. ">"
else
s = s .. tostring(arg[i])
end
end
if string.len(s) == 0 then
s = "\n"
end
DEFAULT_CHAT_FRAME:AddMessage(s)
end
local start
tableToString = function(t, depth)
if t[".recurse"] then
return "<recursion>"
end
t[".recurse"] = 1
if depth == nil then
depth = 0
start = GetTime()
end
if GetTime() - start >= 0.05 then
return "{too large}"
end
local s = ""
s = "{\n"
for k,v in pairs(t) do
if k ~= ".recurse" then
s = s .. string.rep(" ", depth + 1)
if type(k) == "table" then
s = s .. "[" .. tableToString(k, depth + 1) .. "]"
elseif type(k) == "string" then
local u = format("[%q]", k)
if not string.find(k, "[^A-Za-z0-9_]") and string.sub(u, 3, -3) == k then
s = s .. k
else
s = s .. u
end
else
s = s .. "[" .. tostring(k) .. "]"
end
s = s .. " = "
if type(v) == "table" then
s = s .. tableToString(v, depth + 1)
elseif type(v) == "string" then
s = s .. format("%q", v)
else
s = s .. tostring(v)
end
s = s .. ",\n"
end
end
s = s .. string.rep(" ", depth) .. "}"
t[".recurse"] = nil
if depth == 0 then
start = nil
end
return s
end
local tableToString = tableToString
printFull = function(k, t)
if t == nil then
k, t = nil, k
end
local s
if type(t) == "table" and type(t[0]) == "userdata" then
local name = t:GetName()
if name == "" or name == nil then
name = ""
else
name = ":" .. name
end
t = "<" .. t:GetObjectType() .. name .. ">"
end
if type(t) == "table" and type(t[0]) ~= "userdata" then
if k == nil then
s = tableToString(t)
else
s = k .. " = " .. tableToString(t)
end
else
if k == nil then
s = t
else
s = k .. " = " .. t
end
end
string.gsub(s, "[^\n]+", print)
end
codeposition = function(num)
return strsub(debugstack((num or 0) + 2, 1, 0), 0, -5)
end