111 lines
3.1 KiB
Lua
111 lines
3.1 KiB
Lua
local addonName, Private = ...
|
|
|
|
FunctionsAPIMixin = Private.CreateFromMixins(BaseAPIMixin);
|
|
|
|
function FunctionsAPIMixin:GetParentName()
|
|
if self.System then
|
|
return self.System:GetName();
|
|
end
|
|
|
|
return "";
|
|
end
|
|
|
|
function FunctionsAPIMixin:GetType()
|
|
return "function";
|
|
end
|
|
|
|
function FunctionsAPIMixin:GetLinkHexColor()
|
|
return "55ddff";
|
|
end
|
|
|
|
function FunctionsAPIMixin:GetFullName(decorateOptionals, includeColorCodes)
|
|
return ("%s(%s)"):format(self:GetName(), self:GetArgumentString(decorateOptionals, includeColorCodes));
|
|
end
|
|
|
|
function FunctionsAPIMixin:MatchesSearchString(searchString)
|
|
if self:GetLoweredName():match(searchString) then
|
|
return true;
|
|
end
|
|
|
|
if self:MatchesAnyDocumentation(searchString) then
|
|
return true;
|
|
end
|
|
|
|
if self:MatchesAnyAPI(self.Arguments, searchString) then
|
|
return true
|
|
end
|
|
|
|
if self:MatchesAnyAPI(self.Returns, searchString) then
|
|
return true
|
|
end
|
|
|
|
return false;
|
|
end
|
|
|
|
function FunctionsAPIMixin:GetArgumentString(decorateOptionals, includeColorCodes)
|
|
if self.Arguments then
|
|
local values = {};
|
|
for i, argumentInfo in ipairs(self.Arguments) do
|
|
if includeColorCodes ~= false then
|
|
table.insert(values, ("%s|cff%s"):format(argumentInfo:GetArgumentString(decorateOptionals, includeColorCodes), self:GetLinkHexColor()));
|
|
else
|
|
table.insert(values, argumentInfo:GetArgumentString(decorateOptionals, includeColorCodes));
|
|
end
|
|
end
|
|
return table.concat(values, ", ");
|
|
end
|
|
return "";
|
|
end
|
|
|
|
function FunctionsAPIMixin:GetReturnString(decorateOptionals, includeColorCodes)
|
|
if self.Returns then
|
|
local values = {};
|
|
for i, returnInfo in ipairs(self.Returns) do
|
|
if includeColorCodes ~= false then
|
|
table.insert(values, ("%s|cff%s"):format(returnInfo:GetReturnString(decorateOptionals, includeColorCodes), self:GetLinkHexColor()));
|
|
else
|
|
table.insert(values, returnInfo:GetReturnString(decorateOptionals, includeColorCodes));
|
|
end
|
|
end
|
|
return table.concat(values, ", ");
|
|
end
|
|
return "";
|
|
end
|
|
|
|
function FunctionsAPIMixin:GetClipboardString()
|
|
if self.Returns then
|
|
return ("local %s = %s"):format(self:GetReturnString(false, false), self:GetFullName(false, false));
|
|
end
|
|
return self:GetFullName(false, false);
|
|
end
|
|
|
|
function FunctionsAPIMixin:GetDetailedOutputLines()
|
|
local lines = {};
|
|
table.insert(lines, self:GetSingleOutputLine());
|
|
|
|
self:AddSystemTag(lines);
|
|
self:AddDocumentationTags(lines);
|
|
|
|
if self.Arguments then
|
|
table.insert(lines, APIDocumentation:GetIndentString() .. "Arguments");
|
|
for i, argumentInfo in ipairs(self.Arguments) do
|
|
if argumentInfo:GetStrideIndex() == 1 then
|
|
table.insert(lines, APIDocumentation:GetIndentString(2) .. "(Variable arguments)");
|
|
end
|
|
|
|
table.insert(lines, APIDocumentation:GetIndentString(2) .. ("%d. %s"):format(i, argumentInfo:GetSingleOutputLine()));
|
|
end
|
|
end
|
|
|
|
if self.Returns then
|
|
table.insert(lines, APIDocumentation:GetIndentString() .. "Returns");
|
|
for i, returnInfo in ipairs(self.Returns) do
|
|
if returnInfo:GetStrideIndex() == 1 then
|
|
table.insert(lines, APIDocumentation:GetIndentString(2) .. "(Variable returns)");
|
|
end
|
|
table.insert(lines, APIDocumentation:GetIndentString(2) .. ("%d. %s"):format(i, returnInfo:GetSingleOutputLine()));
|
|
end
|
|
end
|
|
|
|
return lines;
|
|
end |