annotate Libs/LibStub/LibStub.lua @ 8:1b2d819b4fa8
Now using the global MailAddonBusy to indicate MailOpener is busy, read comments in Core.lua for more info.
Default status is now ?enabled without automatic mail opening? to let first time users look around before MailOpener messes up their heads. A StaticPopupDialog will be added later to ask if they want to auto-enable.
When ?enabled without automatic mail opening? is on and you toggle the mail opening checkbox on, mail opening will automatically start.
| author |
Zerotorescue |
| date |
Thu, 09 Sep 2010 10:53:19 +0200 |
| parents |
823e33465b6e |
| children |
|
| rev |
line source |
|
Zerotorescue@0
|
1 -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
|
|
Zerotorescue@0
|
2 -- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
|
|
Zerotorescue@0
|
3 local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
|
|
Zerotorescue@0
|
4 local LibStub = _G[LIBSTUB_MAJOR]
|
|
Zerotorescue@0
|
5
|
|
Zerotorescue@0
|
6 if not LibStub or LibStub.minor < LIBSTUB_MINOR then
|
|
Zerotorescue@0
|
7 LibStub = LibStub or {libs = {}, minors = {} }
|
|
Zerotorescue@0
|
8 _G[LIBSTUB_MAJOR] = LibStub
|
|
Zerotorescue@0
|
9 LibStub.minor = LIBSTUB_MINOR
|
|
Zerotorescue@0
|
10
|
|
Zerotorescue@0
|
11 function LibStub:NewLibrary(major, minor)
|
|
Zerotorescue@0
|
12 assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
|
|
Zerotorescue@0
|
13 minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
|
|
Zerotorescue@0
|
14
|
|
Zerotorescue@0
|
15 local oldminor = self.minors[major]
|
|
Zerotorescue@0
|
16 if oldminor and oldminor >= minor then return nil end
|
|
Zerotorescue@0
|
17 self.minors[major], self.libs[major] = minor, self.libs[major] or {}
|
|
Zerotorescue@0
|
18 return self.libs[major], oldminor
|
|
Zerotorescue@0
|
19 end
|
|
Zerotorescue@0
|
20
|
|
Zerotorescue@0
|
21 function LibStub:GetLibrary(major, silent)
|
|
Zerotorescue@0
|
22 if not self.libs[major] and not silent then
|
|
Zerotorescue@0
|
23 error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
|
|
Zerotorescue@0
|
24 end
|
|
Zerotorescue@0
|
25 return self.libs[major], self.minors[major]
|
|
Zerotorescue@0
|
26 end
|
|
Zerotorescue@0
|
27
|
|
Zerotorescue@0
|
28 function LibStub:IterateLibraries() return pairs(self.libs) end
|
|
Zerotorescue@0
|
29 setmetatable(LibStub, { __call = LibStub.GetLibrary })
|
|
Zerotorescue@0
|
30 end
|