From ef08b296b2a38b72958b84dd672b9d802a2cf438 Mon Sep 17 00:00:00 2001 From: Phanx Date: Mon, 28 Jul 2014 23:56:42 -0700 Subject: [PATCH] Hard-embed LibStub since WoWI's packager doesn't support libraries --- .gitignore | 6 +----- .pkgmeta | 13 ++----------- LibRealmInfo.toc | 4 +--- LibStub/LibStub.lua | 30 ++++++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 LibStub/LibStub.lua diff --git a/.gitignore b/.gitignore index 63376a0..dd6bbe7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,4 @@ .Trashes Desktop.ini ehthumbs.db -Thumbs.db - -# WoW stuff - -Libs/ \ No newline at end of file +Thumbs.db \ No newline at end of file diff --git a/.pkgmeta b/.pkgmeta index bb838ae..ea1e235 100644 --- a/.pkgmeta +++ b/.pkgmeta @@ -2,14 +2,5 @@ package-as: LibRealmInfo enable-nolib-creation: no -manual-changelog: - filename: CHANGELOG.txt - markup-type: markdown - -externals: - Libs/LibStub: - url: svn://svn.wowace.com/wow/libstub/mainline/trunk - tag: latest - Libs/CallbackHandler-1.0: - url: svn://svn.wowace.com/wow/callbackhandler/mainline/trunk/CallbackHandler-1.0 - tag: latest \ No newline at end of file +tools-used: + - libstub \ No newline at end of file diff --git a/LibRealmInfo.toc b/LibRealmInfo.toc index 514a31f..131ce2d 100644 --- a/LibRealmInfo.toc +++ b/LibRealmInfo.toc @@ -14,9 +14,7 @@ ## X-Curse-Project-ID: librealminfo ## X-WoWI-ID: -## OptionalDeps: LibStub, CallbackHandler-1.0 - +## OptionalDeps: LibStub Libs\LibStub\LibStub.lua -Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua LibRealmInfo\LibRealmInfo.lua \ No newline at end of file diff --git a/LibStub/LibStub.lua b/LibStub/LibStub.lua new file mode 100644 index 0000000..0a41ac0 --- /dev/null +++ b/LibStub/LibStub.lua @@ -0,0 +1,30 @@ +-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info +-- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke +local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS! +local LibStub = _G[LIBSTUB_MAJOR] + +if not LibStub or LibStub.minor < LIBSTUB_MINOR then + LibStub = LibStub or {libs = {}, minors = {} } + _G[LIBSTUB_MAJOR] = LibStub + LibStub.minor = LIBSTUB_MINOR + + function LibStub:NewLibrary(major, minor) + assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)") + minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.") + + local oldminor = self.minors[major] + if oldminor and oldminor >= minor then return nil end + self.minors[major], self.libs[major] = minor, self.libs[major] or {} + return self.libs[major], oldminor + end + + function LibStub:GetLibrary(major, silent) + if not self.libs[major] and not silent then + error(("Cannot find a library instance of %q."):format(tostring(major)), 2) + end + return self.libs[major], self.minors[major] + end + + function LibStub:IterateLibraries() return pairs(self.libs) end + setmetatable(LibStub, { __call = LibStub.GetLibrary }) +end -- 1.7.9.5