vanilla-wow-addons – Rev 1
?pathlinks?
--===========================================================================--
---------------------------- LootTracker by PNB ----------------------------
--===========================================================================--
-- LootTrackerOutput.lua
--
-- Debug methods
--===========================================================================--
------------------------------------------------------------------------------
-- Globals
-- These values are global, but not saved when the session ends.
------------------------------------------------------------------------------
LT_CurrentIndentString = "";
LT_Indent = " ";
LT_WriteBuffer = "";
LT_BufferCurrentIndent = "";
------------------------------------------------------------------------------
-- Message
-- Writes a system message to the chat frame
------------------------------------------------------------------------------
function LT_Message(msg)
-- Make sure the chat frame we're adding messages to exists
if (DEFAULT_CHAT_FRAME) then
-- Get the information for system messages
local info = ChatTypeInfo["SYSTEM"];
local settings = LT_GetSettings();
local chatColor = {r=info.r,g=info.g,b=info.b};
if (settings.ChatColor ~= nil) then
chatColor = settings.ChatColor;
end
-- Add the message as a system message
DEFAULT_CHAT_FRAME:AddMessage(LT_CurrentIndentString .. msg, chatColor.r, chatColor.g, chatColor.b, info.id);
end
end
------------------------------------------------------------------------------
-- MessageIndent
-- Indent all following Message() calls.
------------------------------------------------------------------------------
function LT_MessageIndent()
LT_CurrentIndentString = LT_CurrentIndentString .. LT_Indent;
end
------------------------------------------------------------------------------
-- MessageUnindent
-- Unindent all following Message() calls.
------------------------------------------------------------------------------
function LT_MessageUnindent()
local indentSize = strlen(LT_Indent);
local currentIndentSize = strlen(LT_CurrentIndentString);
LT_CurrentIndentString = strsub(LT_CurrentIndentString, 1, currentIndentSize - indentSize);
end
------------------------------------------------------------------------------
-- StdOut
------------------------------------------------------------------------------
LT_StdOut = {
Write=LT_Message,
Indent=LT_MessageIndent,
Unindent=LT_MessageUnindent
};
------------------------------------------------------------------------------
-- BufferWrite
------------------------------------------------------------------------------
function LT_BufferWrite(text)
LT_WriteBuffer = LT_WriteBuffer .. LT_BufferCurrentIndent .. text .. "\n";
end
------------------------------------------------------------------------------
-- BufferIndent
------------------------------------------------------------------------------
function LT_BufferIndent()
LT_BufferCurrentIndent = LT_BufferCurrentIndent .. LT_Indent;
end
------------------------------------------------------------------------------
-- BufferUnindent
------------------------------------------------------------------------------
function LT_BufferUnindent()
local indentSize = strlen(LT_Indent);
local currentIndentSize = strlen(LT_BufferCurrentIndent);
LT_BufferCurrentIndent = strsub(LT_BufferCurrentIndent, 1, currentIndentSize - indentSize);
end
------------------------------------------------------------------------------
-- BufferOut
------------------------------------------------------------------------------
LT_BufferOut = {
Write=LT_BufferWrite,
Indent=LT_BufferIndent,
Unindent=LT_BufferUnindent
};
------------------------------------------------------------------------------
-- FormatMessageTable
-- Formats and outputs a table object.
------------------------------------------------------------------------------
function LT_FormatMessageTable(t, prefix, output)
if (output == nil) then
LT_DebugMessage(2, "Redirecting to standard output in LT_FormatMessageTable");
output = LT_StdOut;
end
if (prefix == nil) then
output.Write("{");
else
output.Write(prefix);
end
output.Indent();
foreach(t, function(k,v)
LT_FormatMessageKeyValue(k, v, output);
end);
output.Unindent();
if (prefix == nil) then
output.Write("}");
end
end
------------------------------------------------------------------------------
-- FormatMessageKeyValue
-- Formats and outputs a key,value pair.
------------------------------------------------------------------------------
function LT_FormatMessageKeyValue(key, value, output)
if (output == nil) then
LT_DebugMessage(2, "Redirecting to standard output in LT_FormatMessageKeyValue");
output = LT_StdOut;
end
local prefix = key .. ": ";
if (type(value) == "table") then
LT_FormatMessageTable(value, prefix, output);
else
output.Write(prefix .. tostring(value));
end
end
------------------------------------------------------------------------------
-- FormatMessage
-- Formats and outputs an object depending on its type.
------------------------------------------------------------------------------
function LT_FormatMessage(value, output)
if (output == nil) then
LT_DebugMessage(2, "Redirecting to standard output in LT_FormatMessage");
output = LT_StdOut;
end
if (type(value) == "table") then
LT_FormatMessageTable(value, nil, output);
else
output.Write(tostring(value));
end
end
------------------------------------------------------------------------------
-- DebugMessage
-- Displays a message only if debug mode is enabled
------------------------------------------------------------------------------
function LT_DebugMessage(level, message)
local settings = LT_GetSettings();
local levelThreshold = settings.DebugLevel;
if (levelThreshold == nil) then
levelThreshold = 1;
end
if (levelThreshold >= level) then
LT_Message(message);
end
end