<?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%3AApitype</id>
	<title>Module:Apitype - 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%3AApitype"/>
	<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:Apitype&amp;action=history"/>
	<updated>2026-05-06T18:56:41Z</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:Apitype&amp;diff=7163&amp;oldid=prev</id>
		<title>imported&gt;Ketho at 14:51, 6 October 2024</title>
		<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:Apitype&amp;diff=7163&amp;oldid=prev"/>
		<updated>2024-10-06T14:51:54Z</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;-- https://warcraft.wiki.gg/wiki/Template:Apitype&lt;br /&gt;
local data = mw.loadData(&amp;quot;Module:Apitype/data&amp;quot;)&lt;br /&gt;
local m = {}&lt;br /&gt;
&lt;br /&gt;
local suffices = {&lt;br /&gt;
	[&amp;quot;%?&amp;quot;] = &amp;quot;nilable&amp;quot;,&lt;br /&gt;
	[&amp;quot;%[%]&amp;quot;] = &amp;quot;array&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- cannot use table.concat&lt;br /&gt;
local function tconcat(t, del)&lt;br /&gt;
	local size = 0&lt;br /&gt;
	for _ in pairs(t) do&lt;br /&gt;
		size = size + 1&lt;br /&gt;
	end&lt;br /&gt;
	local s = &amp;quot;&amp;quot;&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		s = s..v&lt;br /&gt;
		if k ~= size then&lt;br /&gt;
			s = s..del&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- todo: refactor&lt;br /&gt;
local function FormatString(args, text)&lt;br /&gt;
	-- need to match the dot in e.g. &amp;quot;Enum.AuctionHouseFilter&amp;quot;&lt;br /&gt;
	local name, symbols = text:match(&amp;quot;([%w%._:]+)([%[%]%?]*)&amp;quot;)&lt;br /&gt;
	local s&lt;br /&gt;
	if name:find(&amp;quot;Mixin&amp;quot;) or data.enum[name] or #args.link &amp;gt; 0 then -- specifically want a colored hyperlink&lt;br /&gt;
		s = string.format(&amp;#039;[[%s|&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;]]%s&amp;lt;small&amp;gt;🔗&amp;lt;/small&amp;gt;&amp;#039;, name, name, symbols)&lt;br /&gt;
	elseif name:find(&amp;quot;Callback$&amp;quot;) then&lt;br /&gt;
		s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;function&amp;lt;/font&amp;gt;%s : &amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;&amp;lt;small&amp;gt;%s&amp;lt;/small&amp;gt;&amp;lt;/font&amp;gt;&amp;#039;, symbols, name)&lt;br /&gt;
	elseif name:find(&amp;quot;^xs:&amp;quot;) then&lt;br /&gt;
		s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;&amp;#039;, name)&lt;br /&gt;
	elseif data.blizzardTypes[name] then&lt;br /&gt;
		if data.blizzardTypes[name].Type == &amp;quot;Mixin&amp;quot; then&lt;br /&gt;
			s = string.format(&amp;#039;[[%s|&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;]]%s&amp;lt;small&amp;gt;🔗&amp;lt;/small&amp;gt;&amp;#039;, data.blizzardTypes[name].Mixin, data.blizzardTypes[name].Name, symbols)&lt;br /&gt;
		elseif data.blizzardTypes[name].Link then&lt;br /&gt;
			if data.blizzardTypes[name].Link:find(&amp;quot;dbc:&amp;quot;) then&lt;br /&gt;
				local link = string.format(&amp;quot;https://wago.tools/db2/%s&amp;quot;, data.blizzardTypes[name].Link:match(&amp;quot;dbc:(.+)&amp;quot;))&lt;br /&gt;
				s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;%s &amp;lt;small&amp;gt;: &amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;[%s %s]&amp;lt;/font&amp;gt;&amp;lt;/small&amp;gt;&amp;#039;, data.blizzardTypes[name].Type, symbols, link, name)&lt;br /&gt;
			else&lt;br /&gt;
				s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;%s &amp;lt;small&amp;gt;: &amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/font&amp;gt;&amp;lt;/small&amp;gt;&amp;#039;, data.blizzardTypes[name].Type, symbols, data.blizzardTypes[name].Link, name)&lt;br /&gt;
			end&lt;br /&gt;
		elseif data.blizzardTypes[name].Replace then&lt;br /&gt;
			s = string.format(&amp;#039;[[UIOBJECT_%s|&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;]]%s&amp;lt;small&amp;gt;🔗&amp;lt;/small&amp;gt;&amp;#039;, data.blizzardTypes[name].Type, data.blizzardTypes[name].Type, symbols)&lt;br /&gt;
		elseif data.blizzardTypes[name].Values then&lt;br /&gt;
			s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;%s &amp;lt;small&amp;gt;: &amp;lt;span class=&amp;quot;tttemplatelink&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;small&amp;gt;%s&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt;&amp;#039;, data.blizzardTypes[name].Type, symbols, name, tconcat(data.blizzardTypes[name].Values, &amp;quot;, &amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;%s &amp;lt;small&amp;gt;: &amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;&amp;lt;/small&amp;gt;&amp;#039;, data.blizzardTypes[name].Type, symbols, name)&lt;br /&gt;
		end&lt;br /&gt;
		if data.blizzardTypes[name].Description then&lt;br /&gt;
			s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;&amp;lt;span title=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/font&amp;gt;&amp;#039;, data.blizzardTypes[name].Description, s)&lt;br /&gt;
		end&lt;br /&gt;
	elseif data.structure[name] then&lt;br /&gt;
		s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#4ec9b0&amp;quot;&amp;gt;&amp;lt;span title=&amp;quot;table&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/font&amp;gt;%s&amp;#039;, name, symbols)&lt;br /&gt;
	elseif data.widget[name] then&lt;br /&gt;
		s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;[[UIOBJECT_%s|&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;]]%s&amp;lt;small&amp;gt;🔗&amp;lt;/small&amp;gt;&amp;lt;/font&amp;gt;&amp;#039;, name, name, symbols)&lt;br /&gt;
	elseif data.custom[name] then&lt;br /&gt;
		s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;&amp;lt;span title=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/font&amp;gt;%s&amp;#039;, data.custom[name], name, symbols)&lt;br /&gt;
	elseif data.link[name] then&lt;br /&gt;
		s = string.format(&amp;#039;[[%s|&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;]]%s&amp;#039;, data.link[name], name, symbols)&lt;br /&gt;
	else&lt;br /&gt;
		s = string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;%s&amp;#039;, name, symbols)&lt;br /&gt;
	end&lt;br /&gt;
	if #symbols &amp;gt; 0 then&lt;br /&gt;
		for k, v in pairs(suffices) do&lt;br /&gt;
			s = s:gsub(k, string.format(&amp;#039;&amp;lt;span title=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, v, k))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function GetTypes(args)&lt;br /&gt;
	local text = args[1]&lt;br /&gt;
	if data.multipleTypes[text] then&lt;br /&gt;
		text = data.multipleTypes[text].Type&lt;br /&gt;
	end&lt;br /&gt;
	local t = {}&lt;br /&gt;
	for s in text:gmatch(&amp;quot;[^,]+&amp;quot;) do&lt;br /&gt;
		table.insert(t, FormatString(args, s))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(t, &amp;quot;|&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local remap = {&lt;br /&gt;
	fileID = &amp;quot;FileDataID&amp;quot;,&lt;br /&gt;
	UnitToken = &amp;quot;UnitId&amp;quot;,&lt;br /&gt;
	WOWGUID = &amp;quot;GUID&amp;quot;,&lt;br /&gt;
	vector2 = &amp;quot;Vector2DMixin&amp;quot;,&lt;br /&gt;
	TickerCallback = &amp;quot;API_types/FunctionContainer&amp;quot;,&lt;br /&gt;
	TimerCallback = &amp;quot;API_types/FunctionContainer&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- fuck this shit this is what happens when you dont give a fuck&lt;br /&gt;
function m.main(f)&lt;br /&gt;
	local s&lt;br /&gt;
	local text = f.args[1]&lt;br /&gt;
	if text:find(&amp;quot;&amp;lt;&amp;quot;) then&lt;br /&gt;
		return string.format(&amp;#039;&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;&amp;#039;, text)&lt;br /&gt;
	end&lt;br /&gt;
	local name, symbols = text:match(&amp;quot;([%w%._]+)([%[%]%?]*)&amp;quot;)&lt;br /&gt;
	if data.v2[name] then&lt;br /&gt;
		local r = {}&lt;br /&gt;
		for _, v in pairs(data.v2[name]) do&lt;br /&gt;
			if not (name == &amp;quot;TickerCallback&amp;quot; and f.args.info == &amp;quot;ret&amp;quot; and v == &amp;quot;function&amp;quot;) then -- fugly hack&lt;br /&gt;
				local apitype = string.format([=[&amp;lt;font color=&amp;quot;#ecbc2a&amp;quot;&amp;gt;%s&amp;lt;/font&amp;gt;]=], v)&lt;br /&gt;
				table.insert(r, apitype)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local basictypes = table.concat(r, &amp;quot;|&amp;quot;)&lt;br /&gt;
		local link&lt;br /&gt;
		if remap[name] then -- hack&lt;br /&gt;
			link = string.format(&amp;quot;[[%s|&amp;lt;span style=\&amp;quot;color:#4ec9b0;\&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;]]&amp;quot;, remap[name], name)&lt;br /&gt;
		else&lt;br /&gt;
			link = string.format(&amp;quot;[[API_types/%s|&amp;lt;span style=\&amp;quot;color:#4ec9b0;\&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;]]&amp;quot;, name, name)&lt;br /&gt;
		end&lt;br /&gt;
		if #symbols &amp;gt; 0 then&lt;br /&gt;
			basictypes = basictypes..symbols&lt;br /&gt;
		end&lt;br /&gt;
		return string.format([[%s &amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;: %s&amp;lt;/span&amp;gt;]], basictypes, link)&lt;br /&gt;
	else&lt;br /&gt;
		s = GetTypes(f.args)&lt;br /&gt;
		if #f.args.range &amp;gt; 0 then&lt;br /&gt;
			s = s..string.format(&amp;quot; &amp;lt;small&amp;gt;&amp;lt;code&amp;gt;[%s]&amp;lt;/code&amp;gt;&amp;lt;/small&amp;gt;&amp;quot;, f.args.range)&lt;br /&gt;
		end&lt;br /&gt;
		if #f.args.default &amp;gt; 0 then&lt;br /&gt;
			s = s..string.format(&amp;#039; &amp;lt;span style=&amp;quot;font-size:smaller; title=&amp;quot;default&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;lt;font color=&amp;quot;#dda0dd&amp;quot;&amp;gt;= %s&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;, f.args.default)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return m&lt;/div&gt;</summary>
		<author><name>imported&gt;Ketho</name></author>
	</entry>
</feed>