Advertisement
draugath

Untitled

Apr 22nd, 2012
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.11 KB | None | 0 0
  1. -- main.lua ------------------------------------
  2. test.print('*** LOADING libtest1 ***')
  3. -- Load the libraries
  4. dofile('libs/volibstub/VOLibStub.lua')
  5. dofile('libs/lib1/lib1.lua')
  6. dofile('libs/lib2/lib2.lua')
  7. dofile('libs/lib3/lib3.lua')
  8.  
  9. -- Load the plugin
  10. dofile('libtest.lua')
  11. test.print('*** COMPLETED libtest1 ***')
  12. -- ---------------------------------------------
  13.  
  14.  
  15. -- libtest.lua ------------------------------------
  16. libtest1 = {}
  17.  
  18. VOLibStub:GetLibrary("MyLibrary-1.0"):Embed(libtest1)
  19. VOLibStub:GetLibrary("MyLibrary-2.0"):Embed(libtest1)
  20.  
  21. local lib3 = VOLibStub:GetLibrary("MyLibrary-3.0")
  22.  
  23. local function test_funcs(event)
  24.     test.print('--- *libtest1* EXECUTING FUNCS @ '..event..' ---')
  25.     libtest1:Lib1FuncA()
  26.     libtest1:Lib1FuncB()
  27.     libtest1:Lib2FuncA()
  28.     libtest1:Lib2FuncB()
  29.  
  30.     lib3:Lib3FuncA()
  31.     lib3:Lib3FuncB()
  32.     test.print('--- *libtest1* FINISHED EXECUTING FUNCS ---')
  33. end
  34.  
  35. RegisterEvent(test_funcs, "PLUGINS_LOADED")
  36.  
  37. test_funcs('LOAD')
  38. -- ---------------------------------------------
  39.  
  40. -- lib1.lua ------------------------------------
  41. local MAJOR, MINOR = "MyLibrary-1.0", 1
  42. local lib = VOLibStub:NewLibrary(MAJOR, MINOR) --returns nil if already loaded, otherwise returns a table
  43.  
  44. if (not lib) then return end --if nil, there's nothing that needs to be done
  45.  
  46. lib.embeds = lib.embeds or {}
  47.  
  48. function lib:Lib1FuncA()
  49.     test.print(MAJOR..'.'..MINOR..' - Executing Lib1FuncA()')
  50. end
  51.  
  52. function lib:Lib1FuncB()
  53.     test.print(MAJOR..'.'..MINOR..' - Executing Lib1FuncB()')
  54. end
  55.  
  56. local mixins = {"Lib1FuncA", "Lib1FuncB"} -- list of functions to be embedded
  57.  
  58. function lib:Embed(target)
  59.     for _,name in pairs(mixins) do
  60.         target[name] = lib[name]
  61.     end
  62.     lib.embeds[target] = true
  63. end
  64.  
  65. -- Put this at the very end of the library to automatically update all functions
  66. for target,_ in pairs(lib.embeds) do
  67.     lib:Embed(target)
  68. end
  69. -- ---------------------------------------------
  70.  
  71.  
  72. -- Test data start --------------------------------------------------
  73. libtest1 - library minor versions (1, 1, 1)
  74. libtest2 - library minor versions (1, 2, 1)
  75. libtest3 - library minor versions (1, 1, 2)
  76.  
  77. --------------------------------------------------------------------------
  78. Plugin load order:
  79. libtest1
  80. libtest2
  81. libtest3
  82.  
  83. *** LOADING libtest1 ***
  84. --- *libtest1* EXECUTING FUNCS @ LOAD ---
  85. MyLibrary-1.0.1 - Executing Lib1FuncA()
  86. MyLibrary-1.0.1 - Executing Lib1FuncB()
  87. MyLibrary-2.0.1 - Executing Lib2FuncA()
  88. MyLibrary-2.0.1 - Executing Lib2FuncB()
  89. MyLibrary-3.0.1 - Executing Lib3FuncA()
  90. MyLibrary-3.0.1 - Executing Lib3FuncB()
  91. --- *libtest1* FINISHED EXECUTING FUNCS ---
  92. *** COMPLETED libtest1 ***
  93. Loaded plugin 'lt1'
  94. *** LOADING libtest2 ***
  95. --- *libtest2* EXECUTING FUNCS @ LOAD ---
  96. MyLibrary-1.0.1 - Executing Lib1FuncA()
  97. MyLibrary-1.0.1 - Executing Lib1FuncB()
  98. MyLibrary-2.0.2 - Executing Lib2FuncA()
  99. MyLibrary-2.0.2 - Executing Lib2FuncB()
  100. MyLibrary-3.0.1 - Executing Lib3FuncA()
  101. MyLibrary-3.0.1 - Executing Lib3FuncB()
  102. --- *libtest2* FINISHED EXECUTING FUNCS ---
  103. *** COMPLETED libtest2 ***
  104. Loaded plugin 'lt2'
  105. *** LOADING libtest3 ***
  106. --- *libtest3* EXECUTING FUNCS @ LOAD ---
  107. MyLibrary-1.0.1 - Executing Lib1FuncA()
  108. MyLibrary-1.0.1 - Executing Lib1FuncB()
  109. MyLibrary-2.0.2 - Executing Lib2FuncA()
  110. MyLibrary-2.0.2 - Executing Lib2FuncB()
  111. MyLibrary-3.0.2 - Executing Lib3FuncA()
  112. MyLibrary-3.0.2 - Executing Lib3FuncB()
  113. --- *libtest3* FINISHED EXECUTING FUNCS ---
  114. *** COMPLETED libtest3 ***
  115. Loaded plugin 'lt3'
  116.  
  117. --- *libtest2* EXECUTING FUNCS @ PLUGINS_LOADED ---
  118. MyLibrary-1.0.1 - Executing Lib1FuncA()
  119. MyLibrary-1.0.1 - Executing Lib1FuncB()
  120. MyLibrary-2.0.2 - Executing Lib2FuncA()
  121. MyLibrary-2.0.2 - Executing Lib2FuncB()
  122. MyLibrary-3.0.2 - Executing Lib3FuncA()
  123. MyLibrary-3.0.2 - Executing Lib3FuncB()
  124. --- *libtest2* FINISHED EXECUTING FUNCS ---
  125. --- *libtest1* EXECUTING FUNCS @ PLUGINS_LOADED ---
  126. MyLibrary-1.0.1 - Executing Lib1FuncA()
  127. MyLibrary-1.0.1 - Executing Lib1FuncB()
  128. MyLibrary-2.0.2 - Executing Lib2FuncA()
  129. MyLibrary-2.0.2 - Executing Lib2FuncB()
  130. MyLibrary-3.0.2 - Executing Lib3FuncA()
  131. MyLibrary-3.0.2 - Executing Lib3FuncB()
  132. --- *libtest1* FINISHED EXECUTING FUNCS ---
  133. --- *libtest3* EXECUTING FUNCS @ PLUGINS_LOADED ---
  134. MyLibrary-1.0.1 - Executing Lib1FuncA()
  135. MyLibrary-1.0.1 - Executing Lib1FuncB()
  136. MyLibrary-2.0.2 - Executing Lib2FuncA()
  137. MyLibrary-2.0.2 - Executing Lib2FuncB()
  138. MyLibrary-3.0.2 - Executing Lib3FuncA()
  139. MyLibrary-3.0.2 - Executing Lib3FuncB()
  140. --- *libtest3* FINISHED EXECUTING FUNCS ---
  141.  
  142.  
  143. --------------------------------------------------------------------------
  144. Plugin load order:
  145. libtest2
  146. libtest3
  147. libtest1
  148.  
  149. *** LOADING libtest2 ***
  150. --- *libtest2* EXECUTING FUNCS @ LOAD ---
  151. MyLibrary-1.0.1 - Executing Lib1FuncA()
  152. MyLibrary-1.0.1 - Executing Lib1FuncB()
  153. MyLibrary-2.0.2 - Executing Lib2FuncA()
  154. MyLibrary-2.0.2 - Executing Lib2FuncB()
  155. MyLibrary-3.0.1 - Executing Lib3FuncA()
  156. MyLibrary-3.0.1 - Executing Lib3FuncB()
  157. --- *libtest2* FINISHED EXECUTING FUNCS ---
  158. *** COMPLETED libtest2 ***
  159. Loaded plugin 'lt2'
  160. *** LOADING libtest3 ***
  161. --- *libtest3* EXECUTING FUNCS @ LOAD ---
  162. MyLibrary-1.0.1 - Executing Lib1FuncA()
  163. MyLibrary-1.0.1 - Executing Lib1FuncB()
  164. MyLibrary-2.0.2 - Executing Lib2FuncA()
  165. MyLibrary-2.0.2 - Executing Lib2FuncB()
  166. MyLibrary-3.0.2 - Executing Lib3FuncA()
  167. MyLibrary-3.0.2 - Executing Lib3FuncB()
  168. --- *libtest3* FINISHED EXECUTING FUNCS ---
  169. *** COMPLETED libtest3 ***
  170. Loaded plugin 'lt3'
  171. *** LOADING libtest1 ***
  172. --- *libtest1* EXECUTING FUNCS @ LOAD ---
  173. MyLibrary-1.0.1 - Executing Lib1FuncA()
  174. MyLibrary-1.0.1 - Executing Lib1FuncB()
  175. MyLibrary-2.0.2 - Executing Lib2FuncA()
  176. MyLibrary-2.0.2 - Executing Lib2FuncB()
  177. MyLibrary-3.0.2 - Executing Lib3FuncA()
  178. MyLibrary-3.0.2 - Executing Lib3FuncB()
  179. --- *libtest1* FINISHED EXECUTING FUNCS ---
  180. *** COMPLETED libtest1 ***
  181. Loaded plugin 'lt4'
  182.  
  183. --- *libtest3* EXECUTING FUNCS @ PLUGINS_LOADED ---
  184. MyLibrary-1.0.1 - Executing Lib1FuncA()
  185. MyLibrary-1.0.1 - Executing Lib1FuncB()
  186. MyLibrary-2.0.2 - Executing Lib2FuncA()
  187. MyLibrary-2.0.2 - Executing Lib2FuncB()
  188. MyLibrary-3.0.2 - Executing Lib3FuncA()
  189. MyLibrary-3.0.2 - Executing Lib3FuncB()
  190. --- *libtest3* FINISHED EXECUTING FUNCS ---
  191. --- *libtest2* EXECUTING FUNCS @ PLUGINS_LOADED ---
  192. MyLibrary-1.0.1 - Executing Lib1FuncA()
  193. MyLibrary-1.0.1 - Executing Lib1FuncB()
  194. MyLibrary-2.0.2 - Executing Lib2FuncA()
  195. MyLibrary-2.0.2 - Executing Lib2FuncB()
  196. MyLibrary-3.0.2 - Executing Lib3FuncA()
  197. MyLibrary-3.0.2 - Executing Lib3FuncB()
  198. --- *libtest2* FINISHED EXECUTING FUNCS ---
  199. --- *libtest1* EXECUTING FUNCS @ PLUGINS_LOADED ---
  200. MyLibrary-1.0.1 - Executing Lib1FuncA()
  201. MyLibrary-1.0.1 - Executing Lib1FuncB()
  202. MyLibrary-2.0.2 - Executing Lib2FuncA()
  203. MyLibrary-2.0.2 - Executing Lib2FuncB()
  204. MyLibrary-3.0.2 - Executing Lib3FuncA()
  205. MyLibrary-3.0.2 - Executing Lib3FuncB()
  206. --- *libtest1* FINISHED EXECUTING FUNCS ---
  207.  
  208.  
  209. --------------------------------------------------------------------------
  210. Plugin load order:
  211. libtest3
  212. libtest1
  213. libtest2
  214.  
  215. *** LOADING libtest3 ***
  216. --- *libtest3* EXECUTING FUNCS @ LOAD ---
  217. MyLibrary-1.0.1 - Executing Lib1FuncA()
  218. MyLibrary-1.0.1 - Executing Lib1FuncB()
  219. MyLibrary-2.0.1 - Executing Lib2FuncA()
  220. MyLibrary-2.0.1 - Executing Lib2FuncB()
  221. MyLibrary-3.0.2 - Executing Lib3FuncA()
  222. MyLibrary-3.0.2 - Executing Lib3FuncB()
  223. --- *libtest3* FINISHED EXECUTING FUNCS ---
  224. *** COMPLETED libtest3 ***
  225. Loaded plugin 'alt3'
  226. *** LOADING libtest1 ***
  227. --- *libtest1* EXECUTING FUNCS @ LOAD ---
  228. MyLibrary-1.0.1 - Executing Lib1FuncA()
  229. MyLibrary-1.0.1 - Executing Lib1FuncB()
  230. MyLibrary-2.0.1 - Executing Lib2FuncA()
  231. MyLibrary-2.0.1 - Executing Lib2FuncB()
  232. MyLibrary-3.0.2 - Executing Lib3FuncA()
  233. MyLibrary-3.0.2 - Executing Lib3FuncB()
  234. --- *libtest1* FINISHED EXECUTING FUNCS ---
  235. *** COMPLETED libtest1 ***
  236. Loaded plugin 'blt1'
  237. *** LOADING libtest2 ***
  238. --- *libtest2* EXECUTING FUNCS @ LOAD ---
  239. MyLibrary-1.0.1 - Executing Lib1FuncA()
  240. MyLibrary-1.0.1 - Executing Lib1FuncB()
  241. MyLibrary-2.0.2 - Executing Lib2FuncA()
  242. MyLibrary-2.0.2 - Executing Lib2FuncB()
  243. MyLibrary-3.0.2 - Executing Lib3FuncA()
  244. MyLibrary-3.0.2 - Executing Lib3FuncB()
  245. --- *libtest2* FINISHED EXECUTING FUNCS ---
  246. *** COMPLETED libtest2 ***
  247. Loaded plugin 'clt2'
  248.  
  249. --- *libtest1* EXECUTING FUNCS @ PLUGINS_LOADED ---
  250. MyLibrary-1.0.1 - Executing Lib1FuncA()
  251. MyLibrary-1.0.1 - Executing Lib1FuncB()
  252. MyLibrary-2.0.2 - Executing Lib2FuncA()
  253. MyLibrary-2.0.2 - Executing Lib2FuncB()
  254. MyLibrary-3.0.2 - Executing Lib3FuncA()
  255. MyLibrary-3.0.2 - Executing Lib3FuncB()
  256. --- *libtest1* FINISHED EXECUTING FUNCS ---
  257. --- *libtest3* EXECUTING FUNCS @ PLUGINS_LOADED ---
  258. MyLibrary-1.0.1 - Executing Lib1FuncA()
  259. MyLibrary-1.0.1 - Executing Lib1FuncB()
  260. MyLibrary-2.0.2 - Executing Lib2FuncA()
  261. MyLibrary-2.0.2 - Executing Lib2FuncB()
  262. MyLibrary-3.0.2 - Executing Lib3FuncA()
  263. MyLibrary-3.0.2 - Executing Lib3FuncB()
  264. --- *libtest3* FINISHED EXECUTING FUNCS ---
  265. --- *libtest2* EXECUTING FUNCS @ PLUGINS_LOADED ---
  266. MyLibrary-1.0.1 - Executing Lib1FuncA()
  267. MyLibrary-1.0.1 - Executing Lib1FuncB()
  268. MyLibrary-2.0.2 - Executing Lib2FuncA()
  269. MyLibrary-2.0.2 - Executing Lib2FuncB()
  270. MyLibrary-3.0.2 - Executing Lib3FuncA()
  271. MyLibrary-3.0.2 - Executing Lib3FuncB()
  272. --- *libtest2* FINISHED EXECUTING FUNCS ---
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement