<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://secrets.warcraftwatch.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AElinks-api</id>
	<title>Module:Elinks-api - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://secrets.warcraftwatch.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AElinks-api"/>
	<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:Elinks-api&amp;action=history"/>
	<updated>2026-05-06T19:52:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://secrets.warcraftwatch.com/w/index.php?title=Module:Elinks-api&amp;diff=7170&amp;oldid=prev</id>
		<title>imported&gt;Ketho at 04:47, 21 November 2020</title>
		<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:Elinks-api&amp;diff=7170&amp;oldid=prev"/>
		<updated>2020-11-21T04:47:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- See [[Template:Elinks-api]] and [[Module:Api]]&lt;br /&gt;
&lt;br /&gt;
local api = require(&amp;quot;Module:Api&amp;quot;)	-- parses t= or auto-detects using common code for all api templates&lt;br /&gt;
&lt;br /&gt;
local module = {}					-- see function module.GetLinks() below&lt;br /&gt;
&lt;br /&gt;
-- private constants&lt;br /&gt;
&lt;br /&gt;
local HTML_LIST_START = [=[&amp;lt;ul class=&amp;quot;plainlinks elinks&amp;quot; style=&amp;quot;list-style-position:outside&amp;quot;&amp;gt;]=]&lt;br /&gt;
local HTML_LIST_ITEM = [=[&amp;lt;li style=&amp;quot;padding-left: 0px&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;display:inline-block; width:25px; text-align:center&amp;quot;&amp;gt;[[Image:%s.png|16px|link=]]&amp;lt;/span&amp;gt;[%s %s], %s&amp;lt;/li&amp;gt;]=]&lt;br /&gt;
local HTML_LIST_END = [=[&amp;lt;/ul&amp;gt;]=]&lt;br /&gt;
local HTML_TYPE_NOT_FOUND = [=[&amp;lt;span style=&amp;quot;color:red; font-weight:bold&amp;quot;&amp;gt;Error: unknown or undetected type.&amp;lt;/span&amp;gt;]=]&lt;br /&gt;
&lt;br /&gt;
-- private functions&lt;br /&gt;
&lt;br /&gt;
local function GetGetheQueryUrl(apiType, name)&lt;br /&gt;
	if (apiType == api.TYPE_WIDGETMETHOD and string.find(name, &amp;quot;:&amp;quot;)) then&lt;br /&gt;
		-- Searches for only the method name to limit false positives in the search results&lt;br /&gt;
		return &amp;quot;https://github.com/Gethe/wow-ui-source/search?q=&amp;quot;..string.sub(name, string.find(name, &amp;quot;:&amp;quot;),-1)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;https://github.com/Gethe/wow-ui-source/search?q=&amp;quot;..name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function GetTlyGlobeUrl(name)&lt;br /&gt;
	return &amp;quot;https://www.townlong-yak.com/globe/wut/#q:&amp;quot;..name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function GetTlyBadUrl(fullName, patch)&lt;br /&gt;
	return string.format(&amp;quot;https://www.townlong-yak.com/framexml/%s/Blizzard_APIDocumentation#%s&amp;quot;,patch or &amp;quot;latest&amp;quot;, fullName)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function GetMrBudsUrl(apiType, member, system)&lt;br /&gt;
	if (apiType == api.TYPE_EVENT) then&lt;br /&gt;
		member = string.gsub(string.gsub(&amp;quot;_&amp;quot;..string.lower(member),&amp;quot;%_%l&amp;quot;,string.upper),&amp;quot;_&amp;quot;,&amp;quot;&amp;quot;)  -- PLAYER_LOGIN to PlayerLogin&lt;br /&gt;
		return string.format(&amp;quot;https://mrbuds.github.io/wow-api-web/?search=api:event:%s:%s&amp;quot;, member, system)&lt;br /&gt;
	elseif (apiType == api.TYPE_FUNCTION) then&lt;br /&gt;
		return string.format(&amp;quot;https://mrbuds.github.io/wow-api-web/?search=api:function:%s:%s&amp;quot;, member, system)&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&amp;quot;https://mrbuds.github.io/wow-api-web/&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function GetWowProgrammingUrl(apiType, name)&lt;br /&gt;
	if (apiType == api.TYPE_FUNCTION) then&lt;br /&gt;
		return &amp;quot;http://wowprogramming.com/docs/api/&amp;quot;..name..&amp;quot;.html&amp;quot;&lt;br /&gt;
	elseif (apiType == api.TYPE_CVAR) then&lt;br /&gt;
		return &amp;quot;http://wowprogramming.com/docs/cvars/&amp;quot;..name..&amp;quot;.html&amp;quot;&lt;br /&gt;
	elseif (apiType == api.TYPE_EVENT) then&lt;br /&gt;
		return &amp;quot;http://wowprogramming.com/docs/events/&amp;quot;..name..&amp;quot;.html&amp;quot;&lt;br /&gt;
	elseif (apiType == api.TYPE_SCRIPT) then&lt;br /&gt;
		return &amp;quot;http://wowprogramming.com/docs/scripts/&amp;quot;..name..&amp;quot;.html&amp;quot;&lt;br /&gt;
	elseif (apiType == api.TYPE_WIDGET) then&lt;br /&gt;
		return &amp;quot;http://wowprogramming.com/docs/widgets/&amp;quot;..name..&amp;quot;.html&amp;quot;&lt;br /&gt;
	elseif (apiType == api.TYPE_WIDGETMETHOD and string.find(name, &amp;quot;:&amp;quot;)) then&lt;br /&gt;
		local widget = string.sub(name, 1, string.find(name, &amp;quot;:&amp;quot;) - 1)&lt;br /&gt;
		local method = string.sub(name, string.find(name, &amp;quot;:&amp;quot;) + 1)&lt;br /&gt;
		return &amp;quot;http://wowprogramming.com/docs/widgets/&amp;quot;..widget..&amp;quot;/&amp;quot;..method..&amp;quot;.html&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;http://wowprogramming.com/&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- public functions&lt;br /&gt;
&lt;br /&gt;
function module.GetLinks(frame)&lt;br /&gt;
	local pagename = frame.args[1]		-- Pagename, or an override name=&lt;br /&gt;
	-- local t = frame.args[2]			-- The t= parameter is parsed by [[Module:Api]] below&lt;br /&gt;
	local namespace = frame.args[3]		-- C_Namespace or empty string&lt;br /&gt;
	local system = frame.args[4]		-- system or emtpy string&lt;br /&gt;
	local patch = frame.args[5]			-- legacy WoW patch for depreciated funcs, or empty string&lt;br /&gt;
	local flags = frame.args[6]			-- zero or more flags using the pattern:  [~~flag1[##param1][~~flag2[##param2]~~&lt;br /&gt;
	local str = {HTML_LIST_START}		-- pieces returned to the wiki using table.concat({firstLine, HTML_LIST_ITEM:format(...), ..., lastLine})&lt;br /&gt;
&lt;br /&gt;
	-- Use [[Module:Api]] for common t= parsing and auto-detection.  If unrecognized, then STOP!&lt;br /&gt;
	local apiType, apiSubtype = api.GetType(frame)	-- pass the frame so it can pull args 1 and 2 as if it were a wiki {{#invoke}}&lt;br /&gt;
	if apiType == nil or apiType == api.TYPE_VARIABLE and apiSubtype == nil then&lt;br /&gt;
		return HTML_TYPE_NOT_FOUND&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- What is this called?&lt;br /&gt;
	local name = &lt;br /&gt;
		apiType == api.TYPE_FUNCTION and string.gsub(string.sub(pagename, string.sub(pagename,1,4) == &amp;quot;API &amp;quot; and 5 or 1), &amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
		or apiType == api.TYPE_CVAR and string.sub(pagename, string.sub(pagename,1,5) == &amp;quot;CVar &amp;quot; and 6 or 1)&lt;br /&gt;
		or apiType == api.TYPE_EVENT and string.gsub(pagename, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
		or apiType == api.TYPE_WIDGET and string.sub(pagename, string.sub(pagename,1,9) == &amp;quot;UIOBJECT &amp;quot; and 10 or 1)&lt;br /&gt;
		or apiType == api.TYPE_WIDGETMETHOD and string.gsub(string.sub(pagename, string.sub(pagename,1,4) == &amp;quot;API &amp;quot; and 5 or 1), &amp;quot; &amp;quot;, &amp;quot;:&amp;quot;)&lt;br /&gt;
		or apiType == api.TYPE_SCRIPT and string.sub(pagename, string.sub(pagename,1,9) == &amp;quot;UIHANDLER &amp;quot; and 11 or 1)&lt;br /&gt;
		or pagename&lt;br /&gt;
&lt;br /&gt;
	-- What else do we know (manually set) or can infer from the name?&lt;br /&gt;
	local namespace = namespace ~= &amp;quot;&amp;quot; and namespace or string.find(name, &amp;quot;%.&amp;quot;) and string.sub(1,string.find(name, &amp;quot;%.&amp;quot;)-1)&lt;br /&gt;
	local system = system ~= &amp;quot;&amp;quot; and system or namespace and string.sub(namespace, 3)&lt;br /&gt;
	local member = string.find(name, &amp;quot;%.&amp;quot;) and string.sub(name,string.find(name, &amp;quot;%.&amp;quot;)+1)&lt;br /&gt;
&lt;br /&gt;
	-- Build the output strings&lt;br /&gt;
	if (apiType == api.TYPE_FUNCTION or apiType == api.TYPE_EVENT) then&lt;br /&gt;
		-- Gethe&lt;br /&gt;
		if (string.find(flags, &amp;quot;~~nogit&amp;quot;) == nil and patch == &amp;quot;&amp;quot;) then&lt;br /&gt;
			table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;GitHub_Octocat&amp;quot;, GetGetheQueryUrl(apiType, member or name), &amp;quot;GitHub FrameXML&amp;quot;, &amp;quot;Gethe&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- TLY Globe&lt;br /&gt;
		if (patch == &amp;quot;&amp;quot;) then&lt;br /&gt;
			table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;Townlong-Yak_Globe&amp;quot;, GetTlyGlobeUrl(name), [[Globe &amp;quot;wut?&amp;quot; Tool]], &amp;quot;Townlong-Yak&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Blizzard API Docs&lt;br /&gt;
		if (system and string.find(flags, &amp;quot;~~nodoc&amp;quot;) == nil) then&lt;br /&gt;
			-- TLY BAD&lt;br /&gt;
			table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;Townlong-Yak_BAD&amp;quot;, GetTlyBadUrl(name, patch ~= &amp;quot;&amp;quot; and patch), &amp;quot;Blizzard API Docs&amp;quot;, &amp;quot;Townlong-Yak&amp;quot;))&lt;br /&gt;
			-- MrBuds&lt;br /&gt;
			if (patch == &amp;quot;&amp;quot;) then&lt;br /&gt;
				table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;ProfIcons_engineering&amp;quot;, GetMrBudsUrl(apiType, member or name, system), &amp;quot;Offline /api addon&amp;quot;, &amp;quot;MrBuds&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif (apiType == api.TYPE_CVAR or apiType == api.TYPE_SCRIPT or apiType == api.TYPE_WIDGETMETHOD) then&lt;br /&gt;
		-- Gethe&lt;br /&gt;
		if (string.find(flags, &amp;quot;~~nogit&amp;quot;) == nil and patch == &amp;quot;&amp;quot;) then&lt;br /&gt;
			table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;GitHub_Octocat&amp;quot;, GetGetheQueryUrl(apiType, member or name), &amp;quot;GitHub FrameXML&amp;quot;, &amp;quot;Gethe&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
	elseif (apiType == api.TYPE_VARIABLE) then&lt;br /&gt;
		if (apiSubtype == api.SUBTYPE_MIXIN) then&lt;br /&gt;
			-- TLY Globe&lt;br /&gt;
			if (patch == &amp;quot;&amp;quot;) then&lt;br /&gt;
				table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;Townlong-Yak_Globe&amp;quot;, GetTlyGlobeUrl(name), [[Globe &amp;quot;wut?&amp;quot; Tool]], &amp;quot;Townlong-Yak&amp;quot;))&lt;br /&gt;
			end	&lt;br /&gt;
			-- Gethe&lt;br /&gt;
			if (string.find(flags, &amp;quot;~~nogit&amp;quot;) == nil and patch == &amp;quot;&amp;quot;) then&lt;br /&gt;
				table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;GitHub_Octocat&amp;quot;, GetGetheQueryUrl(apiType, member or name), &amp;quot;GitHub FrameXML&amp;quot;, &amp;quot;Gethe&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local wowprog = string.find(flags, &amp;quot;~~wowprog&amp;quot;)&lt;br /&gt;
	if (wowprog) then&lt;br /&gt;
		table.insert(str, string.format(HTML_LIST_ITEM, &amp;quot;Wowprogramming&amp;quot;, string.match(flags,&amp;quot;~~wowprog@@(.-)~~&amp;quot;) or GetWowProgrammingUrl(apiType,name), &amp;quot;wowprogramming&amp;quot;, &amp;quot;Jim Whitehead&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(str, HTML_LIST_END)&lt;br /&gt;
	&lt;br /&gt;
	-- Return the list if it has at least one member; otherwise return an empty string.&lt;br /&gt;
	return #str &amp;gt; 2 and table.concat(str) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return module&lt;/div&gt;</summary>
		<author><name>imported&gt;Ketho</name></author>
	</entry>
</feed>