annotate Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua @ 23:52973d00a183

- framework update.
author Tercio
date Tue, 08 Sep 2015 13:23:31 -0300
parents
children 0682d738499b
rev   line source
Tercio@23 1
Tercio@23 2 assert(LibStub, "LibDataBroker-1.1 requires LibStub")
Tercio@23 3 assert(LibStub:GetLibrary("CallbackHandler-1.0", true), "LibDataBroker-1.1 requires CallbackHandler-1.0")
Tercio@23 4
Tercio@23 5 local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 3)
Tercio@23 6 if not lib then return end
Tercio@23 7 oldminor = oldminor or 0
Tercio@23 8
Tercio@23 9
Tercio@23 10 lib.callbacks = lib.callbacks or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib)
Tercio@23 11 lib.attributestorage, lib.namestorage, lib.proxystorage = lib.attributestorage or {}, lib.namestorage or {}, lib.proxystorage or {}
Tercio@23 12 local attributestorage, namestorage, callbacks = lib.attributestorage, lib.namestorage, lib.callbacks
Tercio@23 13
Tercio@23 14 if oldminor < 2 then
Tercio@23 15 lib.domt = {
Tercio@23 16 __metatable = "access denied",
Tercio@23 17 __index = function(self, key) return attributestorage[self] and attributestorage[self][key] end,
Tercio@23 18 }
Tercio@23 19 end
Tercio@23 20
Tercio@23 21 if oldminor < 3 then
Tercio@23 22 lib.domt.__newindex = function(self, key, value)
Tercio@23 23 if not attributestorage[self] then attributestorage[self] = {} end
Tercio@23 24 if attributestorage[self][key] == value then return end
Tercio@23 25 attributestorage[self][key] = value
Tercio@23 26 local name = namestorage[self]
Tercio@23 27 if not name then return end
Tercio@23 28 callbacks:Fire("LibDataBroker_AttributeChanged", name, key, value, self)
Tercio@23 29 callbacks:Fire("LibDataBroker_AttributeChanged_"..name, name, key, value, self)
Tercio@23 30 callbacks:Fire("LibDataBroker_AttributeChanged_"..name.."_"..key, name, key, value, self)
Tercio@23 31 callbacks:Fire("LibDataBroker_AttributeChanged__"..key, name, key, value, self)
Tercio@23 32 end
Tercio@23 33 end
Tercio@23 34
Tercio@23 35 if oldminor < 2 then
Tercio@23 36 function lib:NewDataObject(name, dataobj)
Tercio@23 37 if self.proxystorage[name] then return end
Tercio@23 38
Tercio@23 39 if dataobj then
Tercio@23 40 assert(type(dataobj) == "table", "Invalid dataobj, must be nil or a table")
Tercio@23 41 self.attributestorage[dataobj] = {}
Tercio@23 42 for i,v in pairs(dataobj) do
Tercio@23 43 self.attributestorage[dataobj][i] = v
Tercio@23 44 dataobj[i] = nil
Tercio@23 45 end
Tercio@23 46 end
Tercio@23 47 dataobj = setmetatable(dataobj or {}, self.domt)
Tercio@23 48 self.proxystorage[name], self.namestorage[dataobj] = dataobj, name
Tercio@23 49 self.callbacks:Fire("LibDataBroker_DataObjectCreated", name, dataobj)
Tercio@23 50 return dataobj
Tercio@23 51 end
Tercio@23 52 end
Tercio@23 53
Tercio@23 54 if oldminor < 1 then
Tercio@23 55 function lib:DataObjectIterator()
Tercio@23 56 return pairs(self.proxystorage)
Tercio@23 57 end
Tercio@23 58
Tercio@23 59 function lib:GetDataObjectByName(dataobjectname)
Tercio@23 60 return self.proxystorage[dataobjectname]
Tercio@23 61 end
Tercio@23 62
Tercio@23 63 function lib:GetNameByDataObject(dataobject)
Tercio@23 64 return self.namestorage[dataobject]
Tercio@23 65 end
Tercio@23 66 end