No edit summary |
No edit summary |
||
(29 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local infobox_module = require("Module:API_info/util/infobox") |
local infobox_module = require("Module:API_info/util/infobox") |
||
+ | local wowprog_data = mw.loadData("Module:API_info/wowprog/widgets") |
||
local m = {} |
local m = {} |
||
+ | local function GetGithubLink(apiType, search) |
||
⚫ | |||
+ | if apiType == "widget" and wowprog_data[search] == "abstract" then return end |
||
⚫ | |||
⚫ | |||
⚫ | |||
+ | icon = "GitHub_Octocat.png", |
||
− | { |
||
− | + | text = "FrameXML", |
|
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | return item |
||
− | }, |
||
+ | end |
||
⚫ | |||
+ | |||
− | } |
||
+ | local function GetWowprogLink(apiType, widget, method) |
||
+ | local item = { |
||
+ | icon = "Wowprogramming.png", |
||
⚫ | |||
⚫ | |||
+ | 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) |
function m.main(f) |
||
− | local |
+ | local apiType = f.args.t |
− | local |
+ | local pageName = f.args.name |
+ | local github_tbl, wowprog_tbl |
||
− | name = method, |
||
+ | 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 = { |
||
⚫ | |||
+ | {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