You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.0 KiB

-- Share.lua
-- @Author : DengSir (tdaddon@163.com)
-- @Link : https://dengsir.github.io
-- @Date : 9/21/2018, 9:50:36 AM
local ns = select(2, ...)
local Addon = ns.Addon
local Director = ns.Director
local SharePrototype = {
Export = nop,
Import = nop,
Is = nop,
}
local handlers = {}
function Addon:NewShareHandler(version)
local handler = CopyTable(SharePrototype)
handler.version = version
tinsert(handlers, handler)
sort(handlers, function(a, b)
return a.version > b.version
end)
return handler
end
function Addon:Export(script)
return handlers[1]:Export(script)
end
function Addon:Import(code)
for _, handler in ipairs(handlers) do
if handler:Is(code) then
local ok, data = handler:Import(code)
if not ok or not data or not data.db or not data.db.code then
return false
end
if not Director:BuildScript(data.db.code) then
return false
end
return true, data
end
end
end