Quantcast
--[[

 Copyright (c) 2009, Adrian L Lange
 All rights reserved.

 You're allowed to use this addon, free of monetary charge,
 but you are not allowed to modify, alter, or redistribute
 this addon without express, written permission of the author.

--]]

local next = next
local find, lower = string.find, string.lower

local addon = CreateFrame('Frame', 'pError')
local orig = UIErrorsFrame:GetScript('OnEvent')

local function slashCommand(str)
	if(str == 'reset') then
		pMinimapDB = {}
		print('|cffff8080pError:|r Database is now reset to default')
	elseif(str == 'list') then
		if(pMinimapDB[1]) then
			print('|cffff8080pError:|r Listing database:')
			for k, v in next, pMinimapDB do
				print('            |cff95ff95', v, '|r')
			end
		else
			print('|cffff8080pError:|r Database is empty')
		end
	elseif(#str > 0) then
		for k, v in next, pMinimapDB do
			if(find(str, v)) then
				tremove(pMinimapDB, k)
				return print('|cffff8080pError:|r Removed|cff95ff95', v, '|rfrom database')
			end
		end

		tinsert(pMinimapDB, str)
		print('|cffff8080pError:|r Added|cff95ff95', str, '|rto database')
	end
end

local function errorEvent(self, event, str, ...)
	if(event == 'UI_ERROR_MESSAGE' and pMinimapDB[1]) then
		for k, v in next, pMinimapDB do
			if(find(lower(str), v)) then
				return
			end
		end
	end

	return orig(self, event, str, ...)
end

addon:RegisterEvent('ADDON_LOADED')
addon:SetScript('OnEvent', function(self, event, name)
	if(name ~= self:GetName()) then return end

	self:UnregisterEvent(event)
	pErrorDB = pErrorDB or {}

	SLASH_pError1 = '/perror'
	SlashCmdList[name] = function(str) slashCommand(lower(str)) end

	UIErrorsFrame:SetScript('OnEvent', errorEvent)
end)