AmeisenEventHook
This class captures events from WoW via Lua, makes it output a json, parses it and fires methods that you registered.
How does it work
First it will create a Frame in WoW that will listen for events and inserts them into a table. That table will later be parsed and converted into a JSON.
abFrame = CreateFrame("FRAME", "AbotEventFrame")
abEventTable = {}
function abEventHandler(self, event, ...)
table.insert(abEventTable, {time(), event, {...}})
end
if abFrame:GetScript("OnEvent") == nil then
abFrame:SetScript("OnEvent", abEventHandler)
end
The table will be converted to JSON with a piece of Lua code, after this code has been executed you're able to read the abEventJson via GetLocalizedText or whatever you want with it.
abEventJson='['
for a,b in pairs(abEventTable)do
abEventJson=abEventJson..'{'
for c,d in pairs(b)do
if type(d)=="table"then
abEventJson=abEventJson..'\"args\": ['
for e,f in pairs(d)do
abEventJson=abEventJson..'\"'..f..'\"'
if e<=table.getn(d)then
abEventJson=abEventJson..','
end
end;
abEventJson=abEventJson..']}'
if a<table.getn(abEventTable)then
abEventJson=abEventJson..','
end
else
if type(d)=="string"then
abEventJson=abEventJson..'\"event\": \"'..d..'\",'
else
abEventJson=abEventJson..'\"time\": \"'..d..'\",'
end
end
end
end
abEventJson=abEventJson..']'
abEventTable={}
abFrame:RegisterEvent("eventName")
abFrame:UnregisterEvent("eventName")