vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
LINKSNAG_MAX_LINK_LENGTH = 32;
LINKSNAG_LINK_COLOR = "00FF00";
LINKSNAG_TIMESTAMP_ON = false;


function linkSnagExportFrame_OnLoad()
        linkSnag_old_ChatFrame_OnEvent = ChatFrame_OnEvent;
        ChatFrame_OnEvent = linkSnag_new_ChatFrame_OnEvent;

        linkSnag_old_SetItemRef = SetItemRef;
        SetItemRef = linkSnag_new_SetItemRef;

        RegisterForSave("LINKSNAG_TIMESTAMP_ON");
        
        SlashCmdList["TIMESTAMP_ENABLE"] = linkSnag_timeStampEnable;
        SLASH_TIMESTAMP_ENABLE1 = "/lstime";
end

function linkSnag_timeStampEnable()
        if(LINKSNAG_TIMESTAMP_ON == false) then
                LINKSNAG_TIMESTAMP_ON = true;
                DEFAULT_CHAT_FRAME:AddMessage("linkSnag timestamps are now ENABLED");
        else
                LINKSNAG_TIMESTAMP_ON = false;
                DEFAULT_CHAT_FRAME:AddMessage("linkSnag timestamps are now DISABLED");
        end
end

function linkSnag_new_ChatFrame_OnEvent(orig_event)
        if(not this.Original_AddMessage) then
                this.Original_AddMessage = this.AddMessage;
                this.AddMessage = linkSnag_ChatTimestamp_AddMessage;
        end

        local msg = arg1;
        
        if(string.sub(orig_event, 1, 8) == "CHAT_MSG" and msg ~= nil) then
                msg = string.gsub(msg, "(%s?)(www%.[%w_/%.%?%%=~-]+)(%s?)", linkSnag_linkGen);  -- www.whatever.com/dir/file.ext
                msg = string.gsub(msg, "(%s?)(%a+://[%w_/%.%?%%=~-]+)(%s?)", linkSnag_linkGen); -- http://sub.domain.com/dir/file.ext
                msg = string.gsub(msg, "(%s?)([_%w-%.~]+@[_%w-]+%.[_%w-%.]+)(%s?)", linkSnag_linkGen);-- 192.168.0.1:12345/dir/file.ext
                msg = string.gsub(msg, "(%s?)(%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?[:%d%d?%d?%d?%d?]*[%w_/%.%?%%=~-]*)(%s?)", linkSnag_linkGen);--foo@bar.com
                arg1 = msg;
        end
                        
        linkSnag_old_ChatFrame_OnEvent(orig_event);
end 

function linkSnag_new_SetItemRef(link, button)
        if (string.sub(link, 1 , 3) == "ref") then
                linkSnagURL:SetText(string.sub(link,5));
                linkSnagExportFrame:Show();
                linkSnagURL:HighlightText();
                return;
        else
                linkSnag_old_SetItemRef(link, button);
        end
end

function linkSnag_ChatTimestamp_AddMessage(this, msg, r, g, b, id)
        if(msg ~= nil) then
                if(LINKSNAG_TIMESTAMP_ON == true) then
                        msg = linkSnag_timeLink() .. " " .. msg;
                end
        end

        this:Original_AddMessage(msg, r, g, b, id);
        return
end

function linkSnag_timeLink(chatMsg)
        local hour=string.sub(date(),  10, 11);
        local minute=string.sub(date(),  13, 14);
        local second =string.sub(date(),  16, 17);
        
        if tonumber(hour) >12 then
                hour=hour-12;
        else
                hour=tonumber(hour)
                if hour==0 then
                        hour=12;
                end
        end
        return  "[" .. hour .. ":" .. minute .. ":" .. second .. "]";
end

function linkSnag_linkGen(begSpace, URL, aftSpace)
        return begSpace .. "|cff" .. LINKSNAG_LINK_COLOR .. "|Href:" .. URL .. "|h[".. URL .."]|h|r" .. aftSpace;
end

function linkSnag_HideButton_onClick()
        linkSnagExportFrame:Hide();
end