annotate Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua @ 15:218628cb4a29 v1.2.16.0

removed test button from combat log tab
author yellowfive
date Thu, 10 Jul 2014 15:31:17 -0700
parents e75889a45130
children 01b63b8ed811
rev   line source
adam@3 1
adam@3 2 assert(LibStub, "LibDataBroker-1.1 requires LibStub")
adam@3 3 assert(LibStub:GetLibrary("CallbackHandler-1.0", true), "LibDataBroker-1.1 requires CallbackHandler-1.0")
adam@3 4
adam@3 5 local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 4)
adam@3 6 if not lib then return end
adam@3 7 oldminor = oldminor or 0
adam@3 8
adam@3 9
adam@3 10 lib.callbacks = lib.callbacks or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib)
adam@3 11 lib.attributestorage, lib.namestorage, lib.proxystorage = lib.attributestorage or {}, lib.namestorage or {}, lib.proxystorage or {}
adam@3 12 local attributestorage, namestorage, callbacks = lib.attributestorage, lib.namestorage, lib.callbacks
adam@3 13
adam@3 14 if oldminor < 2 then
adam@3 15 lib.domt = {
adam@3 16 __metatable = "access denied",
adam@3 17 __index = function(self, key) return attributestorage[self] and attributestorage[self][key] end,
adam@3 18 }
adam@3 19 end
adam@3 20
adam@3 21 if oldminor < 3 then
adam@3 22 lib.domt.__newindex = function(self, key, value)
adam@3 23 if not attributestorage[self] then attributestorage[self] = {} end
adam@3 24 if attributestorage[self][key] == value then return end
adam@3 25 attributestorage[self][key] = value
adam@3 26 local name = namestorage[self]
adam@3 27 if not name then return end
adam@3 28 callbacks:Fire("LibDataBroker_AttributeChanged", name, key, value, self)
adam@3 29 callbacks:Fire("LibDataBroker_AttributeChanged_"..name, name, key, value, self)
adam@3 30 callbacks:Fire("LibDataBroker_AttributeChanged_"..name.."_"..key, name, key, value, self)
adam@3 31 callbacks:Fire("LibDataBroker_AttributeChanged__"..key, name, key, value, self)
adam@3 32 end
adam@3 33 end
adam@3 34
adam@3 35 if oldminor < 2 then
adam@3 36 function lib:NewDataObject(name, dataobj)
adam@3 37 if self.proxystorage[name] then return end
adam@3 38
adam@3 39 if dataobj then
adam@3 40 assert(type(dataobj) == "table", "Invalid dataobj, must be nil or a table")
adam@3 41 self.attributestorage[dataobj] = {}
adam@3 42 for i,v in pairs(dataobj) do
adam@3 43 self.attributestorage[dataobj][i] = v
adam@3 44 dataobj[i] = nil
adam@3 45 end
adam@3 46 end
adam@3 47 dataobj = setmetatable(dataobj or {}, self.domt)
adam@3 48 self.proxystorage[name], self.namestorage[dataobj] = dataobj, name
adam@3 49 self.callbacks:Fire("LibDataBroker_DataObjectCreated", name, dataobj)
adam@3 50 return dataobj
adam@3 51 end
adam@3 52 end
adam@3 53
adam@3 54 if oldminor < 1 then
adam@3 55 function lib:DataObjectIterator()
adam@3 56 return pairs(self.proxystorage)
adam@3 57 end
adam@3 58
adam@3 59 function lib:GetDataObjectByName(dataobjectname)
adam@3 60 return self.proxystorage[dataobjectname]
adam@3 61 end
adam@3 62
adam@3 63 function lib:GetNameByDataObject(dataobject)
adam@3 64 return self.namestorage[dataobject]
adam@3 65 end
adam@3 66 end
adam@3 67
adam@3 68 if oldminor < 4 then
adam@3 69 local next = pairs(attributestorage)
adam@3 70 function lib:pairs(dataobject_or_name)
adam@3 71 local t = type(dataobject_or_name)
adam@3 72 assert(t == "string" or t == "table", "Usage: ldb:pairs('dataobjectname') or ldb:pairs(dataobject)")
adam@3 73
adam@3 74 local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
adam@3 75 assert(attributestorage[dataobj], "Data object not found")
adam@3 76
adam@3 77 return next, attributestorage[dataobj], nil
adam@3 78 end
adam@3 79
adam@3 80 local ipairs_iter = ipairs(attributestorage)
adam@3 81 function lib:ipairs(dataobject_or_name)
adam@3 82 local t = type(dataobject_or_name)
adam@3 83 assert(t == "string" or t == "table", "Usage: ldb:ipairs('dataobjectname') or ldb:ipairs(dataobject)")
adam@3 84
adam@3 85 local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
adam@3 86 assert(attributestorage[dataobj], "Data object not found")
adam@3 87
adam@3 88 return ipairs_iter, attributestorage[dataobj], 0
adam@3 89 end
adam@3 90 end