Common/stub.lua

37 lines
950 B
Lua

local name, addon = ...
setmetatable(addon,getmetatable(CreateFrame("Frame")))
local LibStub = LibStub
addon['inits'] = addon['inits'] or {}
addon['preloads'] = addon['preloads'] or {}
addon['logouts'] = addon['logouts'] or {}
local function embed(major, funclist,lib)
local base = LibStub:GetLibrary(major, false)
base['addons'] = base['addons'] or {}
base['addons'][addon] = true
-- print(major, funclist,lib)
if(lib) then
for i= 1,#funclist do -- update lib
base[funclist[i]] = lib[funclist[i]]
end
for v in pairs(base['addons']) do -- update embeded addons
for i= 1,#funclist do
v[funclist[i]] = base[funclist[i]]
end
end
else
for i= 1,#funclist do
addon[funclist[i]] = base[funclist[i]]
end
end
end
function addon:LibInit(major, minor, funclist)
local lib = LibStub:NewLibrary(major, minor)
if not lib then
embed(major, funclist)
return nil
end
return function(lib) embed(major, funclist,lib) end
end