<?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%3AApi</id>
	<title>Module: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%3AApi"/>
	<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:Api&amp;action=history"/>
	<updated>2026-05-07T00:49:53Z</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:Api&amp;diff=7155&amp;oldid=prev</id>
		<title>imported&gt;Ketho: Enums</title>
		<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:Api&amp;diff=7155&amp;oldid=prev"/>
		<updated>2022-07-21T22:11:49Z</updated>

		<summary type="html">&lt;p&gt;Enums&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- See [[Template:Api]] and [[Module:Elinks-api]]&lt;br /&gt;
&lt;br /&gt;
local module = {}		-- see function module.GetType() below&lt;br /&gt;
&lt;br /&gt;
-- public constants&lt;br /&gt;
&lt;br /&gt;
module.TYPE_FUNCTION = &amp;quot;a&amp;quot;&lt;br /&gt;
module.TYPE_CVAR = &amp;quot;c&amp;quot;&lt;br /&gt;
module.TYPE_EVENT = &amp;quot;e&amp;quot;&lt;br /&gt;
module.TYPE_WIDGET = &amp;quot;o&amp;quot;&lt;br /&gt;
module.TYPE_WIDGETMETHOD = &amp;quot;w&amp;quot;&lt;br /&gt;
module.TYPE_SCRIPT = &amp;quot;wh&amp;quot;&lt;br /&gt;
module.TYPE_VARIABLE = &amp;quot;t&amp;quot;&lt;br /&gt;
module.TYPE_MACROCOMMAND = &amp;quot;m&amp;quot;&lt;br /&gt;
module.SUBTYPE_MIXIN = &amp;quot;Mixin&amp;quot;&lt;br /&gt;
module.SUBTYPE_ENUM = &amp;quot;Enum&amp;quot;&lt;br /&gt;
module.SUBTYPE_CONST = &amp;quot;Const&amp;quot;&lt;br /&gt;
module.SUBTYPE_STRUCT = &amp;quot;Struct&amp;quot;&lt;br /&gt;
module.SUBTYPE_LINK = &amp;quot;Link&amp;quot;&lt;br /&gt;
module.SUBTYPE_STRING = &amp;quot;String&amp;quot;&lt;br /&gt;
module.SUBTYPE_ID = &amp;quot;ID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- private constants&lt;br /&gt;
&lt;br /&gt;
-- lookup for the t= parameter&lt;br /&gt;
local apiTypes =&lt;br /&gt;
{&lt;br /&gt;
	a = module.TYPE_FUNCTION,&lt;br /&gt;
	c = module.TYPE_CVAR,&lt;br /&gt;
	e = module.TYPE_EVENT,&lt;br /&gt;
	o = module.TYPE_WIDGET,&lt;br /&gt;
	w = module.TYPE_WIDGETMETHOD,&lt;br /&gt;
	wh = module.TYPE_SCRIPT,&lt;br /&gt;
	t = module.TYPE_VARIABLE,&lt;br /&gt;
	m = module.TYPE_MACROCOMMAND,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local apiSubtypes =&lt;br /&gt;
{&lt;br /&gt;
	Mixin = module.TYPE_VARIABLE,&lt;br /&gt;
	Enum = module.TYPE_VARIABLE,&lt;br /&gt;
	Const = module.TYPE_VARIABLE,&lt;br /&gt;
	Struct = module.TYPE_VARIABLE,&lt;br /&gt;
	Link = module.TYPE_VARIABLE,&lt;br /&gt;
	String = module.TYPE_VARIABLE,&lt;br /&gt;
	ID = module.TYPE_VARIABLE,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local apiCategories =&lt;br /&gt;
{&lt;br /&gt;
	a = &amp;quot;Category:API functions&amp;quot;,&lt;br /&gt;
	c = &amp;quot;Category:Console variables&amp;quot;,&lt;br /&gt;
	e = &amp;quot;Category:API events&amp;quot;,&lt;br /&gt;
	o = &amp;quot;Category:Widgets&amp;quot;,&lt;br /&gt;
	w = &amp;quot;Category:Widget methods&amp;quot;,&lt;br /&gt;
	wh = &amp;quot;Category:Widget script handlers&amp;quot;,&lt;br /&gt;
	t = &amp;quot;Category:API types&amp;quot;,&lt;br /&gt;
	m = &amp;quot;Category:Macro API&amp;quot;,&lt;br /&gt;
	Mixin = &amp;quot;Category:Mixins&amp;quot;,&lt;br /&gt;
	Enum = &amp;quot;Category:Enums&amp;quot;,&lt;br /&gt;
	Const = &amp;quot;Category:Constants&amp;quot;,&lt;br /&gt;
	Struct = &amp;quot;Category:Structs&amp;quot;,&lt;br /&gt;
	Link = &amp;quot;Category:Hyperlinks&amp;quot;,&lt;br /&gt;
	String = &amp;quot;Category:Encoded Strings&amp;quot;,&lt;br /&gt;
	ID = &amp;quot;Category:Numeric IDs&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- lookup for widget types, to unambiguously detect widget methods&lt;br /&gt;
local widgets =&lt;br /&gt;
{&lt;br /&gt;
	Alpha = true, &lt;br /&gt;
	Animation = true, &lt;br /&gt;
	AnimationGroup = true, &lt;br /&gt;
	ArchaeologyDigSiteFrame = true, &lt;br /&gt;
	Browser = true, &lt;br /&gt;
	Button = true, &lt;br /&gt;
	CheckButton = true, &lt;br /&gt;
	Checkout = true, &lt;br /&gt;
	CinematicModel = true, &lt;br /&gt;
	ColorSelect = true, &lt;br /&gt;
	ControlPoint = true, &lt;br /&gt;
	Cooldown = true, &lt;br /&gt;
	DressUpModel = true, &lt;br /&gt;
	EditBox = true, &lt;br /&gt;
	FogOfWarFrame = true, &lt;br /&gt;
	Font = true, &lt;br /&gt;
	FontInstance = true, &lt;br /&gt;
	FontString = true, &lt;br /&gt;
	Frame = true, &lt;br /&gt;
	GameTooltip = true, &lt;br /&gt;
	ItemButton = true, &lt;br /&gt;
	LayeredRegion = true, &lt;br /&gt;
	Line = true, &lt;br /&gt;
	LineScale = true, &lt;br /&gt;
	LineTranslation = true, &lt;br /&gt;
	MaskTexture = true, &lt;br /&gt;
	MessageFrame = true, &lt;br /&gt;
	Minimap = true, &lt;br /&gt;
	Model = true, &lt;br /&gt;
	ModelScene = true, &lt;br /&gt;
	ModelSceneActor = true, &lt;br /&gt;
	MovieFrame = true, &lt;br /&gt;
	OffScreenFrame = true, &lt;br /&gt;
	Path = true, &lt;br /&gt;
	PlayerModel = true, &lt;br /&gt;
	POIFrame = true, &lt;br /&gt;
	QuestPOIFrame = true, &lt;br /&gt;
	Region = true, &lt;br /&gt;
	Rotation = true, &lt;br /&gt;
	Scale = true, &lt;br /&gt;
	ScenarioPOIFrame = true, &lt;br /&gt;
	ScriptObject = true, &lt;br /&gt;
	ScrollFrame = true, &lt;br /&gt;
	ScrollingMessageFrame = true, &lt;br /&gt;
	SimpleHTML = true, &lt;br /&gt;
	Slider = true, &lt;br /&gt;
	StatusBar = true, &lt;br /&gt;
	TabardModel = true, &lt;br /&gt;
	Texture = true, &lt;br /&gt;
	TextureCoordTranslation = true, &lt;br /&gt;
	Translation = true, &lt;br /&gt;
	UIObject = true, &lt;br /&gt;
	UnitPositionFrame = true, &lt;br /&gt;
	WorldFrame = true, &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function getType(pagename, t)&lt;br /&gt;
	pagename = pagename or &amp;quot;&amp;quot;&lt;br /&gt;
	t = t or &amp;quot;&amp;quot;&lt;br /&gt;
	local retVal =&lt;br /&gt;
		apiSubtypes[t]&lt;br /&gt;
		or apiTypes[t]&lt;br /&gt;
		or pagename:sub(1, 4) == &amp;quot;API &amp;quot; and (pagename:find(&amp;quot; &amp;quot;, 7) and widgets[pagename:sub(5, pagename:find(&amp;quot; &amp;quot;, 7) - 1)] and module.TYPE_WIDGETMETHOD or module.TYPE_FUNCTION) -- API UIObject GetName or API C Something.DoSomething&lt;br /&gt;
		or pagename:sub(1, 5) == &amp;quot;CVar &amp;quot; and module.TYPE_CVAR&lt;br /&gt;
		or not pagename:find(&amp;quot;[^%u%s]&amp;quot;) and module.TYPE_EVENT&lt;br /&gt;
		or pagename:sub(1, 9) == &amp;quot;UIOBJECT &amp;quot; and module.TYPE_WIDGET&lt;br /&gt;
		or pagename:sub(1, 10) == &amp;quot;UIHANDLER &amp;quot; and module.TYPE_SCRIPT&lt;br /&gt;
		or pagename:sub(1,6) == &amp;quot;MACRO &amp;quot; and module.TYPE_MACROCOMMAND &lt;br /&gt;
		or pagename:sub(-5, -1) == &amp;quot;Mixin&amp;quot; and module.SUBTYPE_MIXIN			-- subtypes of module.TYPE_VARIABLE&lt;br /&gt;
		or pagename:sub( 1, 4) == &amp;quot;Enum&amp;quot; and module.SUBTYPE_ENUM&lt;br /&gt;
		or pagename:sub(1, 6) == &amp;quot;Struct&amp;quot; and module.SUBTYPE_STRUCT&lt;br /&gt;
		or pagename:sub(1, 6) == &amp;quot;Const &amp;quot; and module.SUBTYPE_CONST&lt;br /&gt;
		or pagename:sub(-4, -1) == &amp;quot;Link&amp;quot; and module.SUBTYPE_LINK&lt;br /&gt;
		or pagename:sub(-6, -1) == &amp;quot;String&amp;quot; and module.SUBTYPE_STRING&lt;br /&gt;
		or pagename:sub(-2, -1) == &amp;quot;ID&amp;quot; and module.SUBTYPE_ID&lt;br /&gt;
		or nil&lt;br /&gt;
	if (retVal and apiSubtypes[retVal]) then&lt;br /&gt;
		-- &amp;quot;t&amp;quot;, &amp;quot;mixin&amp;quot;&lt;br /&gt;
		return apiSubtypes[retVal], retVal&lt;br /&gt;
	end&lt;br /&gt;
	-- &amp;quot;a&amp;quot; or nil&lt;br /&gt;
	return retVal&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
-- Returns a key representing the API type, using t= or autodetection, as one of the module.TYPE constants&lt;br /&gt;
-- {{#invoke:Api|GetType|{{PAGENAME}}|{{{t|}}}}}&lt;br /&gt;
function module.GetType(frame)&lt;br /&gt;
	return getType(frame.args[1], frame.args[2])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns the name of a category that a page should belong in&lt;br /&gt;
-- Option 1: {{#invoke:Api|GetCategory|{{PAGENAME}}|{{{t|}}}}}&lt;br /&gt;
-- Option 2: {{#invoke:Api|GetCategory|{{{t}}}}}&lt;br /&gt;
function module.GetCategory(frame)&lt;br /&gt;
	local apiType, apiSubtype = getType(frame.args[1], frame.args[2] or frame.args[1])&lt;br /&gt;
	return apiSubtype and apiCategories[apiSubtype] or apiType and apiCategories[apiType]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns the sortkey that a page should belong in&lt;br /&gt;
-- {{#invoke:Api|GetCategory|{{PAGENAME}}|{{{t|}}}}}&lt;br /&gt;
function module.GetSortKey(frame)&lt;br /&gt;
	local pagename = frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	local apiType, apiSubtype = getType(pagename, frame.args[2])&lt;br /&gt;
	return&lt;br /&gt;
		apiType == module.TYPE_FUNCTION and pagename:sub(5)									-- &amp;quot;API &amp;quot;&lt;br /&gt;
		or apiType == module.TYPE_CVAR and pagename:sub(6)									-- &amp;quot;CVar &amp;quot;&lt;br /&gt;
		or apiType == module.TYPE_WIDGET and pagename:sub(10)								-- &amp;quot;UIOBJECT &amp;quot;&lt;br /&gt;
		or apiType == module.TYPE_WIDGETMETHOD and pagename:sub((pagename:find(&amp;quot; &amp;quot;,5) or 0)+1)		-- &amp;quot;API Frame &amp;quot;&lt;br /&gt;
		or apiType == module.TYPE_SCRIPT and pagename:sub((pagename:find(&amp;quot; &amp;quot;) or 0)+1)		-- &amp;quot;UIHANDLER &amp;quot;&lt;br /&gt;
		or apiType == module.TYPE_MACROCOMMAND and pagename:sub(7)							-- &amp;quot;Macro &amp;quot;&lt;br /&gt;
		or apiSubtype == module.SUBTYPE_ENUM and pagename:sub(6)							-- &amp;quot;Enum.&amp;quot;&lt;br /&gt;
		or apiSubtype == module.SUBTYPE_STRUCT and pagename:sub(8)							-- &amp;quot;Struct &amp;quot;&lt;br /&gt;
		or apiSubtype == module.SUBTYPE_CONST and pagename:sub(7)							-- &amp;quot;Const &amp;quot;&lt;br /&gt;
		or apiType and pagename&lt;br /&gt;
		or apiSubType and pagename&lt;br /&gt;
		or &amp;quot; &amp;quot; .. pagename																	-- For articles about the API that are not actually part of the API itself, to appear at the top of the category&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>