<?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%3AReleaseDate</id>
	<title>Module:ReleaseDate - 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%3AReleaseDate"/>
	<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:ReleaseDate&amp;action=history"/>
	<updated>2026-05-06T23:00:02Z</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:ReleaseDate&amp;diff=7220&amp;oldid=prev</id>
		<title>imported&gt;Surafbrov at 13:15, 13 March 2022</title>
		<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:ReleaseDate&amp;diff=7220&amp;oldid=prev"/>
		<updated>2022-03-13T13:15:39Z</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;-- Obtained and modified from https://en.wikipedia.org/wiki/Module:Video_game_release&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local list = require(&amp;#039;Module:List&amp;#039;);&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local knownargs = {&lt;br /&gt;
	[&amp;#039;format&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;class&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;style&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;list_style&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;item_style&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;item1_style&amp;#039;] = true,&lt;br /&gt;
	[&amp;#039;indent&amp;#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local labels = {&lt;br /&gt;
	[&amp;#039;NA&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;North America\&amp;quot;&amp;gt;NA&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;EU&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Europe\&amp;quot;&amp;gt;EU&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;NAEU&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;North America\&amp;quot;&amp;gt;NA&amp;lt;/abbr&amp;gt;/&amp;lt;abbr title=\&amp;quot;Europe\&amp;quot;&amp;gt;EU&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;EUR&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Europe\&amp;quot;&amp;gt;EU&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;AU&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Australasia\&amp;quot;&amp;gt;AU&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;AUS&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Australasia\&amp;quot;&amp;gt;AU&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;JP&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Japan\&amp;quot;&amp;gt;JP&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;KO&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;South Korea\&amp;quot;&amp;gt;KO&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;BR&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Brazil\&amp;quot;&amp;gt;BR&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;CN&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;China\&amp;quot;&amp;gt;CN&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;PAL&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;PAL region\&amp;quot;&amp;gt;PAL&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;SEA&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Southeast Asia\&amp;quot;&amp;gt;SEA&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;AS&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Asia\&amp;quot;&amp;gt;AS&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;SA&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;South America\&amp;quot;&amp;gt;SA&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;OC&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Oceania\&amp;quot;&amp;gt;OC&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;TW&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Taiwan\&amp;quot;&amp;gt;TW&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;SG&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Singapore\&amp;quot;&amp;gt;SG&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
	[&amp;#039;WW&amp;#039;] = &amp;quot;&amp;lt;abbr title=\&amp;quot;Worldwide\&amp;quot;&amp;gt;WW&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function getLocalLabel(alias)&lt;br /&gt;
	local label = labels[string.upper(alias)]&lt;br /&gt;
&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitLabel(s)&lt;br /&gt;
	local islist = true&lt;br /&gt;
	local res = {}&lt;br /&gt;
	for k,v in ipairs(mw.text.split(s or &amp;#039;&amp;#039;, &amp;#039;%s*/%s*&amp;#039;)) do&lt;br /&gt;
		local v1 = v:match(&amp;#039;^%s*([A-Z][A-Z][A-Z]?)%s*$&amp;#039;)&lt;br /&gt;
		if v1 then&lt;br /&gt;
			table.insert(res,v1)&lt;br /&gt;
		else&lt;br /&gt;
			local v2 = v:match(&amp;#039;^%s*(%[%[[^%[%]|]*|[A-Z][A-Z][A-Z]?%]%])%s*$&amp;#039;)&lt;br /&gt;
			if v2 then&lt;br /&gt;
				table.insert(res,v2)&lt;br /&gt;
			else&lt;br /&gt;
				islist = false&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return islist and res or {s}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local listformat = args[&amp;#039;format&amp;#039;]&lt;br /&gt;
	if (listformat == nil or listformat == &amp;quot;&amp;quot;) then&lt;br /&gt;
		listformat = &amp;quot;unbulleted&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	-- Old syntax &amp;quot;Two parameter region&amp;quot; use case, where param 1 is an article, param 2 is a label, and param 3 is the date. We assume this case if argument 4 is nil.&lt;br /&gt;
	if (args[3] ~= nil and args[4] == nil) then&lt;br /&gt;
		local item = &amp;quot;&amp;lt;span style=\&amp;quot;font-size:95%;\&amp;quot;&amp;gt;[[&amp;quot;&lt;br /&gt;
		if (args[1] ~= nil) then&lt;br /&gt;
			item = item .. args[1]&lt;br /&gt;
		end&lt;br /&gt;
		item = item .. &amp;quot;|&amp;quot;&lt;br /&gt;
		if (args[2] ~= nil) then&lt;br /&gt;
			item = item .. args[2]&lt;br /&gt;
		end&lt;br /&gt;
		item = item .. &amp;quot;]]:&amp;lt;/span&amp;gt; &amp;quot; .. args[3] .. &amp;quot;[[Category:Pages using releasedate with two parameter region]]&amp;quot;&lt;br /&gt;
		table.insert(items, item)&lt;br /&gt;
		-- Old syntax &amp;quot;Blank region&amp;quot; use case, where param 1 is empty, and param 2 is the date.&lt;br /&gt;
	elseif (args[1] == nil and args[2] ~= nil) then&lt;br /&gt;
		local item = args[2] .. &amp;quot;[[Category:Pages using releasedate without a region]]&amp;quot;&lt;br /&gt;
		table.insert(items, item)&lt;br /&gt;
		-- Normal use cases, region/date pairs in 1/2, 3/4, 5/6, etc.&lt;br /&gt;
	else&lt;br /&gt;
		local i = 1&lt;br /&gt;
		local j = 2&lt;br /&gt;
		while (args[i] and args[j]) do&lt;br /&gt;
			local labels = {}&lt;br /&gt;
			for k,v in ipairs(splitLabel(args[i])) do&lt;br /&gt;
				local label = getLocalLabel(v);&lt;br /&gt;
				table.insert(labels, label)&lt;br /&gt;
			end&lt;br /&gt;
			local item = &amp;quot;&amp;lt;span style=\&amp;quot;font-size:95%;\&amp;quot;&amp;gt;&amp;quot; .. table.concat(labels,&amp;#039;/&amp;#039;) .. &amp;quot;:&amp;lt;/span&amp;gt; &amp;quot; .. args[j]&lt;br /&gt;
			table.insert(items, item)&lt;br /&gt;
&lt;br /&gt;
			i = i + 2&lt;br /&gt;
			j = j + 2&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add known parameters of Module:List to the table&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if (knownargs[k] == true) then&lt;br /&gt;
			items[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = list.makeList(listformat, items)&lt;br /&gt;
&lt;br /&gt;
	-- Set message for invalid parameters.&lt;br /&gt;
	local parameterMsg = &amp;quot;[[Category:Pages using releasedate with named parameters|_VALUE_]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- Preview message.&lt;br /&gt;
	if (frame:preprocess(&amp;quot;{{REVISIONID}}&amp;quot;) == &amp;quot;&amp;quot;) then&lt;br /&gt;
		parameterMsg = &amp;quot;&amp;lt;div class=\&amp;quot;hatnote\&amp;quot; style=\&amp;quot;color:red\&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Warning:&amp;lt;/strong&amp;gt; unknown parameter \&amp;quot;_VALUE_\&amp;quot; (this message is shown only in preview).&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Check for invalid parameters	&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if (type(k) ~= &amp;#039;number&amp;#039; and knownargs[k] ~= true) then&lt;br /&gt;
			local msg = parameterMsg:gsub(&amp;#039;_VALUE_&amp;#039;, k)&lt;br /&gt;
			out = out .. msg&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Surafbrov</name></author>
	</entry>
</feed>