Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- main.lua ------------------------------------
- test.print('*** LOADING libtest1 ***')
- -- Load the libraries
- dofile('libs/volibstub/VOLibStub.lua')
- dofile('libs/lib1/lib1.lua')
- dofile('libs/lib2/lib2.lua')
- dofile('libs/lib3/lib3.lua')
- -- Load the plugin
- dofile('libtest.lua')
- test.print('*** COMPLETED libtest1 ***')
- -- ---------------------------------------------
- -- libtest.lua ------------------------------------
- libtest1 = {}
- VOLibStub:GetLibrary("MyLibrary-1.0"):Embed(libtest1)
- VOLibStub:GetLibrary("MyLibrary-2.0"):Embed(libtest1)
- local lib3 = VOLibStub:GetLibrary("MyLibrary-3.0")
- local function test_funcs(event)
- test.print('--- *libtest1* EXECUTING FUNCS @ '..event..' ---')
- libtest1:Lib1FuncA()
- libtest1:Lib1FuncB()
- libtest1:Lib2FuncA()
- libtest1:Lib2FuncB()
- lib3:Lib3FuncA()
- lib3:Lib3FuncB()
- test.print('--- *libtest1* FINISHED EXECUTING FUNCS ---')
- end
- RegisterEvent(test_funcs, "PLUGINS_LOADED")
- test_funcs('LOAD')
- -- ---------------------------------------------
- -- lib1.lua ------------------------------------
- local MAJOR, MINOR = "MyLibrary-1.0", 1
- local lib = VOLibStub:NewLibrary(MAJOR, MINOR) --returns nil if already loaded, otherwise returns a table
- if (not lib) then return end --if nil, there's nothing that needs to be done
- lib.embeds = lib.embeds or {}
- function lib:Lib1FuncA()
- test.print(MAJOR..'.'..MINOR..' - Executing Lib1FuncA()')
- end
- function lib:Lib1FuncB()
- test.print(MAJOR..'.'..MINOR..' - Executing Lib1FuncB()')
- end
- local mixins = {"Lib1FuncA", "Lib1FuncB"} -- list of functions to be embedded
- function lib:Embed(target)
- for _,name in pairs(mixins) do
- target[name] = lib[name]
- end
- lib.embeds[target] = true
- end
- -- Put this at the very end of the library to automatically update all functions
- for target,_ in pairs(lib.embeds) do
- lib:Embed(target)
- end
- -- ---------------------------------------------
- -- Test data start --------------------------------------------------
- libtest1 - library minor versions (1, 1, 1)
- libtest2 - library minor versions (1, 2, 1)
- libtest3 - library minor versions (1, 1, 2)
- --------------------------------------------------------------------------
- Plugin load order:
- libtest1
- libtest2
- libtest3
- *** LOADING libtest1 ***
- --- *libtest1* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.1 - Executing Lib2FuncA()
- MyLibrary-2.0.1 - Executing Lib2FuncB()
- MyLibrary-3.0.1 - Executing Lib3FuncA()
- MyLibrary-3.0.1 - Executing Lib3FuncB()
- --- *libtest1* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest1 ***
- Loaded plugin 'lt1'
- *** LOADING libtest2 ***
- --- *libtest2* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.1 - Executing Lib3FuncA()
- MyLibrary-3.0.1 - Executing Lib3FuncB()
- --- *libtest2* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest2 ***
- Loaded plugin 'lt2'
- *** LOADING libtest3 ***
- --- *libtest3* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest3* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest3 ***
- Loaded plugin 'lt3'
- --- *libtest2* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest2* FINISHED EXECUTING FUNCS ---
- --- *libtest1* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest1* FINISHED EXECUTING FUNCS ---
- --- *libtest3* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest3* FINISHED EXECUTING FUNCS ---
- --------------------------------------------------------------------------
- Plugin load order:
- libtest2
- libtest3
- libtest1
- *** LOADING libtest2 ***
- --- *libtest2* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.1 - Executing Lib3FuncA()
- MyLibrary-3.0.1 - Executing Lib3FuncB()
- --- *libtest2* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest2 ***
- Loaded plugin 'lt2'
- *** LOADING libtest3 ***
- --- *libtest3* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest3* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest3 ***
- Loaded plugin 'lt3'
- *** LOADING libtest1 ***
- --- *libtest1* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest1* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest1 ***
- Loaded plugin 'lt4'
- --- *libtest3* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest3* FINISHED EXECUTING FUNCS ---
- --- *libtest2* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest2* FINISHED EXECUTING FUNCS ---
- --- *libtest1* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest1* FINISHED EXECUTING FUNCS ---
- --------------------------------------------------------------------------
- Plugin load order:
- libtest3
- libtest1
- libtest2
- *** LOADING libtest3 ***
- --- *libtest3* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.1 - Executing Lib2FuncA()
- MyLibrary-2.0.1 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest3* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest3 ***
- Loaded plugin 'alt3'
- *** LOADING libtest1 ***
- --- *libtest1* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.1 - Executing Lib2FuncA()
- MyLibrary-2.0.1 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest1* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest1 ***
- Loaded plugin 'blt1'
- *** LOADING libtest2 ***
- --- *libtest2* EXECUTING FUNCS @ LOAD ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest2* FINISHED EXECUTING FUNCS ---
- *** COMPLETED libtest2 ***
- Loaded plugin 'clt2'
- --- *libtest1* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest1* FINISHED EXECUTING FUNCS ---
- --- *libtest3* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest3* FINISHED EXECUTING FUNCS ---
- --- *libtest2* EXECUTING FUNCS @ PLUGINS_LOADED ---
- MyLibrary-1.0.1 - Executing Lib1FuncA()
- MyLibrary-1.0.1 - Executing Lib1FuncB()
- MyLibrary-2.0.2 - Executing Lib2FuncA()
- MyLibrary-2.0.2 - Executing Lib2FuncB()
- MyLibrary-3.0.2 - Executing Lib3FuncA()
- MyLibrary-3.0.2 - Executing Lib3FuncB()
- --- *libtest2* FINISHED EXECUTING FUNCS ---
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement