125 lines
2.8 KiB
Lua
125 lines
2.8 KiB
Lua
local addonName, Private = ...
|
|
|
|
Private.Mixin = function(object, ...)
|
|
for i = 1, select("#", ...) do
|
|
local mixin = select(i, ...);
|
|
for k, v in pairs(mixin) do
|
|
object[k] = v;
|
|
end
|
|
end
|
|
return object;
|
|
end
|
|
|
|
Private.CreateFromMixins = function(...)
|
|
return Private.Mixin({}, ...)
|
|
end
|
|
|
|
BaseAPIMixin = {};
|
|
|
|
function BaseAPIMixin:GetType()
|
|
return assert(false);
|
|
end
|
|
|
|
function BaseAPIMixin:GetPrettyType()
|
|
return self:GetType();
|
|
end
|
|
|
|
function BaseAPIMixin:GetLinkHexColor()
|
|
return "ffffff";
|
|
end
|
|
|
|
function BaseAPIMixin:GetName()
|
|
return self.Name;
|
|
end
|
|
|
|
function BaseAPIMixin:GetFullName()
|
|
return self:GetName();
|
|
end
|
|
|
|
function BaseAPIMixin:GetParentName()
|
|
return "";
|
|
end
|
|
|
|
function BaseAPIMixin:GetLoweredParentName()
|
|
if not self.loweredParentName then
|
|
self.loweredParentName = self:GetParentName():lower();
|
|
end
|
|
return self.loweredParentName;
|
|
end
|
|
|
|
function BaseAPIMixin:GetLoweredName()
|
|
if not self.loweredName then
|
|
self.loweredName = self:GetName():lower();
|
|
end
|
|
return self.loweredName;
|
|
end
|
|
|
|
function BaseAPIMixin:GetClipboardString()
|
|
return self:GetFullName();
|
|
end
|
|
|
|
function BaseAPIMixin:GenerateAPILink()
|
|
return ("|cff%s|Hapi:%s:%s:%s|h%s|h|r"):format(self:GetLinkHexColor(), self:GetType(), self:GetName(), self:GetParentName(), self:GetFullName());
|
|
end
|
|
|
|
function BaseAPIMixin:GetSingleOutputLine()
|
|
return ("%s %s"):format(self:GetPrettyType(), self:GenerateAPILink());
|
|
end
|
|
|
|
function BaseAPIMixin:GetDetailedOutputLines()
|
|
return { self:GetSingleOutputLine() };
|
|
end
|
|
|
|
function BaseAPIMixin:MatchesSearchString(searchString)
|
|
return false;
|
|
end
|
|
|
|
function BaseAPIMixin:MatchesName(name, parentName)
|
|
if name == self:GetName() then
|
|
return not parentName or parentName == self:GetParentName();
|
|
end
|
|
return false;
|
|
end
|
|
|
|
function BaseAPIMixin:MatchesNameCaseInsenstive(name, parentName)
|
|
if name == self:GetLoweredName() then
|
|
return not parentName or parentName == self:GetLoweredParentName();
|
|
end
|
|
return false;
|
|
end
|
|
|
|
function BaseAPIMixin:MatchesAnyAPI(apiTable, searchString)
|
|
if apiTable then
|
|
for i, apiInfo in ipairs(apiTable) do
|
|
if apiInfo:MatchesSearchString(searchString) then
|
|
return true;
|
|
end
|
|
end
|
|
end
|
|
return false;
|
|
end
|
|
|
|
function BaseAPIMixin:MatchesAnyDocumentation(searchString)
|
|
if self.Documentation then
|
|
for i, documentation in ipairs(self.Documentation) do
|
|
if documentation:lower():match(searchString) then
|
|
return true;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function BaseAPIMixin:AddDocumentationTags(lines)
|
|
if self.Documentation then
|
|
for i, documentation in ipairs(self.Documentation) do
|
|
table.insert(lines, APIDocumentation:GetIndentString() .. documentation);
|
|
end
|
|
end
|
|
end
|
|
|
|
function BaseAPIMixin:AddSystemTag(lines)
|
|
if self.System then
|
|
table.insert(lines, APIDocumentation:GetIndentString() .. ("Part of the %s system"):format(self.System:GenerateAPILink()));
|
|
end
|
|
end
|