No edit summary |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
local m = {} |
local m = {} |
||
− | local function GetGithubLink(search) |
+ | local function GetGithubLink(apiType, search) |
+ | if apiType == "widget" and wowprog_data[search] == "abstract" then return end |
||
local item = { |
local item = { |
||
icon = "GitHub_Octocat.png", |
icon = "GitHub_Octocat.png", |
||
Line 39: | Line 40: | ||
local apiType = f.args.t |
local apiType = f.args.t |
||
local pageName = f.args.name |
local pageName = f.args.name |
||
− | local |
+ | local github_tbl, wowprog_tbl |
if apiType == "widget" then |
if apiType == "widget" then |
||
local widget = pageName:match("UIOBJECT (%w+)") |
local widget = pageName:match("UIOBJECT (%w+)") |
||
if widget then |
if widget then |
||
− | github_tbl = GetGithubLink(widget) |
+ | github_tbl = GetGithubLink(apiType, widget) |
wowprog_tbl = GetWowprogLink(apiType, widget) |
wowprog_tbl = GetWowprogLink(apiType, widget) |
||
end |
end |
||
elseif apiType == "widgetmethod" then |
elseif apiType == "widgetmethod" then |
||
local widget, method = pageName:match("API (%w+) (%w+)") |
local widget, method = pageName:match("API (%w+) (%w+)") |
||
− | github_tbl = GetGithubLink(method) |
+ | github_tbl = GetGithubLink(apiType, method) |
wowprog_tbl = GetWowprogLink(apiType, widget, method) |
wowprog_tbl = GetWowprogLink(apiType, widget, method) |
||
end |
end |
||
Line 55: | Line 56: | ||
{github_tbl, wowprog_tbl}, |
{github_tbl, wowprog_tbl}, |
||
} |
} |
||
− | + | if next(source[2]) then |
|
+ | return infobox_module:main(source) |
||
+ | end |
||
end |
end |
||
Revision as of 19:42, 22 July 2022
Documentation for this module may be created at Module:API info/main/widget/doc
local infobox_module = require("Module:API_info/util/infobox")
local wowprog_data = mw.loadData("Module:API_info/wowprog/widgets")
local m = {}
local function GetGithubLink(apiType, search)
if apiType == "widget" and wowprog_data[search] == "abstract" then return end
local item = {
icon = "GitHub_Octocat.png",
text = "FrameXML",
url = string.format("https://github.com/Gethe/wow-ui-source/search?q=%s", search),
}
return item
end
local function GetWowprogLink(apiType, widget, method)
local item = {
icon = "Wowprogramming.png",
text = "Wowprogramming",
}
if apiType == "widget" then
if wowprog_data[widget] then
item.url = string.format("https://wowprogramming.com/docs/widgets/%s.html", widget)
end
elseif apiType == "widgetmethod" then
local wowprog_widget = wowprog_data[widget..":"..method]
if wowprog_widget then
-- certain Region api are documented as VisibleRegion
if type(wowprog_widget) == "string" then
widget = wowprog_widget
end
item.url = string.format("https://wowprogramming.com/docs/widgets/%s/%s.html", widget, method)
end
end
if item.url then
return item
end
end
function m.main(f)
local apiType = f.args.t
local pageName = f.args.name
local github_tbl, wowprog_tbl
if apiType == "widget" then
local widget = pageName:match("UIOBJECT (%w+)")
if widget then
github_tbl = GetGithubLink(apiType, widget)
wowprog_tbl = GetWowprogLink(apiType, widget)
end
elseif apiType == "widgetmethod" then
local widget, method = pageName:match("API (%w+) (%w+)")
github_tbl = GetGithubLink(apiType, method)
wowprog_tbl = GetWowprogLink(apiType, widget, method)
end
local source = {
"! Links",
{github_tbl, wowprog_tbl},
}
if next(source[2]) then
return infobox_module:main(source)
end
end
return m