Wowpedia

We have moved to Warcraft Wiki. Click here for information and the new URL.

READ MORE

Wowpedia
No edit summary
No edit summary
(32 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)
local items = {
 
  +
if apiType == "widget" and wowprog_data[search] == "abstract" then return end
"! Links",
 
 
local item = {
{
 
  +
icon = "GitHub_Octocat.png",
{
 
icon = "GitHub_Octocat.png",
+
text = "FrameXML",
 
url = string.format("https://github.com/Gethe/wow-ui-source/search?q=%s", search),
text = "FrameXML",
 
 
}
url = "https://github.com/Gethe/wow-ui-source/search?q=%s",
 
  +
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)
 
function m.main(f)
local info = {
+
local apiType = f.args.t
  +
local pageName = f.args.name
name = f.args[1]:gsub("API ", ""):gsub(" ", "_")
 
  +
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(items, info)
+
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