No edit summary |
No edit summary |
||
(25 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
local m = {} |
local m = {} |
||
− | function |
+ | local function GetGithubLink(apiType, search) |
+ | if apiType == "widget" and wowprog_data[search] == "abstract" then return end |
||
⚫ | |||
− | local |
+ | local item = { |
⚫ | |||
− | table.insert(items, "! Links") |
||
− | table.insert(items, { |
||
icon = "GitHub_Octocat.png", |
icon = "GitHub_Octocat.png", |
||
text = "FrameXML", |
text = "FrameXML", |
||
− | url = string.format("https://github.com/Gethe/wow-ui-source/search?q=%s", |
+ | url = string.format("https://github.com/Gethe/wow-ui-source/search?q=%s", search), |
− | } |
+ | } |
+ | return item |
||
⚫ | |||
+ | end |
||
− | table.insert(items, { |
||
+ | |||
⚫ | |||
+ | local function GetWowprogLink(apiType, widget, method) |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | }) |
||
⚫ | |||
+ | } |
||
+ | if apiType == "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 |
||
⚫ | |||
+ | 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 |
||
⚫ | |||
+ | github_tbl = GetGithubLink(apiType, method) |
||
+ | wowprog_tbl = GetWowprogLink(apiType, widget, method) |
||
+ | end |
||
+ | local source = { |
||
+ | "! Links", |
||
+ | {github_tbl, wowprog_tbl}, |
||
+ | } |
||
+ | if next(source[2]) then |
||
⚫ | |||
end |
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