From 0a97f53db9e7dbc4f10d9458c68a10befbc15509 Mon Sep 17 00:00:00 2001 From: p3lim-52096 Date: Mon, 13 Apr 2009 23:00:42 +0000 Subject: [PATCH] Added a cleaner config Fixed some performance issues Fixed compability issues git-svn-id: svn://svn.wowinterface.com/pError-161/trunk@14 7a612bb6-1b7b-4f5f-b58b-e1cc54d1b6b6 --- pError/pError.lua | 123 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 73 insertions(+), 50 deletions(-) diff --git a/pError/pError.lua b/pError/pError.lua index 50a6fed..ef5a1d7 100644 --- a/pError/pError.lua +++ b/pError/pError.lua @@ -1,72 +1,95 @@ -local function OnEvent(self, event, ...) - if(event == 'UI_ERROR_MESSAGE') then - local str = ... - if(pErrorDB2.all) then - return - else - for k,v in ipairs(pErrorDB2.blacklist) do - if(string.find(string.lower(str), string.lower(v))) then return end - end - end - end - - return UIErrorsFrame_OnEvent(self, event, ...) -end +local find = string.find +local lower = string.lower +local format = string.format -local function OnLoad(self, event, addon) - if(addon ~= 'pError') then return end +local next = next +local remove = table.remove +local insert = table.insert - pErrorDB2 = pErrorDB2 or {all = false, blacklist = {}} +local orig = UIErrorsFrame:GetScript('OnEvent') - UIErrorsFrame:SetScript('OnEvent', OnEvent) - self:UnregisterEvent(event) +local function msg(...) + print(format('|cffff8080pError:|r %s', ...)) end -local function pprint(...) - print(string.format('|cffff8080pError:|r %s', ...)) +local function loadDefaults() + local revert = pErrorDB2 or {} -- remove at 3.1 + pErrorDB = setmetatable(pErrorDB or revert, {__index = {all = false, blacklist = {}}}) end -local addon = CreateFrame('Frame') -addon:RegisterEvent('ADDON_LOADED') -addon:SetScript('OnEvent', OnLoad) +local function slashCommand(str) + str = lower(str) -SLASH_PERROR1 = '/perror' -SlashCmdList.PERROR = function(str) if(str == 'reset') then - pErrorDB2 = {all = false, blacklist = {}} - pprint('Savedvariables is now reset') + wipe(pErrorDB) + loadDefaults() + msg('Savedvariables are now reset to default') elseif(str == 'all') then - pErrorDB2.all = not pErrorDB2.all - pprint(string.format('Filtering of all events turned %s', pErrorDB2.all and 'on' or 'off')) + pErrorDB.all = not pErrorDB.all + msg(format('Filtering all events turned %s', pErrorDB.all and 'on' or 'off')) elseif(str == 'list') then - if(pErrorDB2.all) then - pprint('Filtering all events!') - elseif(not pErrorDB2.blacklist[1]) then - pprint('Database is empty') + if(pErrorDB.all) then + msg('Filtering all events!') + elseif(not pErrorDB.blacklist[1]) then + msg('Database is empty') else - pprint('Listing database of events:') - for k,v in pairs(pErrorDB2.blacklist) do - pprint(format(' \'%s\'', v)) + msg('Listing database of events:') + + for k, v in next, pErrorDB.blacklist do + msg(format('|cff95ff95 \'%s\'|r', v)) end end elseif(#str > 0) then - if(pErrorDB2.all) then - pprint('Can\'t add to database, pError is filtering all events') + if(pErrorDB.all) then + msg('Can\'t add to database, pError is filtering all events') else - local num = 0 - for k,v in ipairs(pErrorDB2.blacklist) do - num = num + 1 - if(string.find(string.lower(str), string.lower(v))) then - table.remove(pErrorDB2.blacklist, num) - pprint(format('\'%s\' removed', v)) - return + for k, v in next, pErrorDB.blacklist do + if(find(str, v)) then + remove(pErrorDB.blacklist, k) + return msg(format('Removed |cff95ff95\'%s\'|r from the database', v)) end end - table.insert(pErrorDB2.blacklist, str) - pprint(format('Added \'%s\' to the database', str)) + insert(pErrorDB.blacklist, str) + msg(format('Added |cff95ff95\'%s\'|r to the database', str)) end else - pprint('Please provide an error string') + msg('Please provide an error string') end -end \ No newline at end of file +end + +local function onEvent(self, event, str, ...) + if(event == 'UI_ERROR_MESSAGE') then + if(pErrorDB.all) then + return + else + for k, v in next, pErrorDB.blacklist do + if(find(lower(str), v)) then return end + end + end + end + + return orig(self, event, str, ...) +end + +local function onLoad(self, event, addon) + if(addon ~= 'pError') then return end + self:UnregisterEvent(event) + + loadDefaults() + + -- rollback function, remove soon! + for k, v in next, pErrorDB.blacklist do + remove(pErrorDB.blacklist, k) + insert(pErrorDB.blacklist, lower(v)) + end + + SLASH_pError1 = '/perror' + SlashCmdList.pError = slashCommand + + UIErrorsFrame:SetScript('OnEvent', onEvent) +end + +local addon = CreateFrame('Frame') +addon:RegisterEvent('ADDON_LOADED') +addon:SetScript('OnEvent', onLoad) \ No newline at end of file -- 1.7.9.5