From 6d099f6db14eb932a52f5ab110fc7882ee4390df Mon Sep 17 00:00:00 2001 From: Florian Berthold Date: Sun, 24 May 2026 17:08:21 +0200 Subject: [PATCH] chore(libs): bump LibDataBroker-1.1 to v4 (from canonical) --- .../LibDataBroker-1.1/LibDataBroker-1.1.lua | 26 ++++++++++++++++++- .../Libs/LibDataBroker-1.1/README.textile | 13 ++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 ProfessionMenu/Libs/LibDataBroker-1.1/README.textile diff --git a/ProfessionMenu/Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua b/ProfessionMenu/Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua index 364602e..f47c0cd 100644 --- a/ProfessionMenu/Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua +++ b/ProfessionMenu/Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua @@ -2,7 +2,7 @@ assert(LibStub, "LibDataBroker-1.1 requires LibStub") assert(LibStub:GetLibrary("CallbackHandler-1.0", true), "LibDataBroker-1.1 requires CallbackHandler-1.0") -local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 3) +local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 4) if not lib then return end oldminor = oldminor or 0 @@ -64,3 +64,27 @@ if oldminor < 1 then return self.namestorage[dataobject] end end + +if oldminor < 4 then + local next = pairs(attributestorage) + function lib:pairs(dataobject_or_name) + local t = type(dataobject_or_name) + assert(t == "string" or t == "table", "Usage: ldb:pairs('dataobjectname') or ldb:pairs(dataobject)") + + local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name + assert(attributestorage[dataobj], "Data object not found") + + return next, attributestorage[dataobj], nil + end + + local ipairs_iter = ipairs(attributestorage) + function lib:ipairs(dataobject_or_name) + local t = type(dataobject_or_name) + assert(t == "string" or t == "table", "Usage: ldb:ipairs('dataobjectname') or ldb:ipairs(dataobject)") + + local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name + assert(attributestorage[dataobj], "Data object not found") + + return ipairs_iter, attributestorage[dataobj], 0 + end +end diff --git a/ProfessionMenu/Libs/LibDataBroker-1.1/README.textile b/ProfessionMenu/Libs/LibDataBroker-1.1/README.textile new file mode 100644 index 0000000..ef16fed --- /dev/null +++ b/ProfessionMenu/Libs/LibDataBroker-1.1/README.textile @@ -0,0 +1,13 @@ +LibDataBroker is a small WoW addon library designed to provide a "MVC":http://en.wikipedia.org/wiki/Model-view-controller interface for use in various addons. +LDB's primary goal is to "detach" plugins for TitanPanel and FuBar from the display addon. +Plugins can provide data into a simple table, and display addons can receive callbacks to refresh their display of this data. +LDB also provides a place for addons to register "quicklaunch" functions, removing the need for authors to embed many large libraries to create minimap buttons. +Users who do not wish to be "plagued" by these buttons simply do not install an addon to render them. + +Due to it's simple generic design, LDB can be used for any design where you wish to have an addon notified of changes to a table. + +h2. Links + +* "API documentation":http://github.com/tekkub/libdatabroker-1-1/wikis/api +* "Data specifications":http://github.com/tekkub/libdatabroker-1-1/wikis/data-specifications +* "Addons using LDB":http://github.com/tekkub/libdatabroker-1-1/wikis/addons-using-ldb