Jump to content

Module:Video game release

From Simple English Wikipedia, the free encyclopedia

This module implements the{{Video game release}}and{{Video game release hlist}}templates. The parameter "format" is passed to Module:List to set the output format. Please see the template page for usage instructions and tracking categories.


require('strict')

localgetArgs=require('Module:Arguments').getArgs
localcd=require('Module:CountryData')
locallist=require('Module:List');
localp={}

localknownargs={
['format']=true,
['class']=true,
['style']=true,
['list_style']=true,
['item_style']=true,
['item1_style']=true,
['indent']=true
}

locallabels={
['NA']="[[North America|NA]]",
['EU']="[[Europe|EU]]",
['EUR']="[[Europe|EU]]",
['AU']="[[Australasia|AU]]",
['AUS']="[[Australasia|AU]]",
['PAL']="[[PAL region|PAL]]",
['SEA']="[[Southeast Asia|SEA]]",
['AS']="[[Asia|AS]]",
['SA']="[[South America|SA]]",
['OC']="[[Oceania|OC]]",
['WW']="<abbr title=\ "Worldwide\ ">WW</abbr> ",
['?']="<abbr title=\ "Unknown\ ">?</abbr> "
}

localfunctiongetLocalLabel(alias)
locallabel=labels[string.upper(alias)]

returnlabel
end

localcountryData={};-- Used to store country data to avoid the need of repeated calls to Module:CountryData. This saves a little time if the same abbreviation appears multiple times in the template.

localfunctiongetCountryData(frame,alias)
localualias=string.upper(alias)

if(countryData[ualias]==nil)then
localcdtable=cd.gettable(frame,alias,{})
countryData[ualias]=cdtable['alias']
end

returncountryData[ualias]
end

functionp.main(frame)
localargs=getArgs(frame)
locallistformat=args['format']
if(listformat==nilorlistformat=="")then
listformat="unbulleted"
end
localitems={}

-- Old syntax "Two parameter region" 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.
if(args[3]~=nilandargs[4]==nil)then
localitem="<span style=\ "font-size:95%;\ ">[[ "
if(args[1]~=nil)then
item=item..args[1]
end
item=item.."|"
if(args[2]~=nil)then
item=item..args[2]
end
item=item.."]]:</span>"..args[3].."[[Category:Pages using vgrelease with two parameter region]]"
table.insert(items,item)
-- Old syntax "Blank region" use case, where param 1 is empty, and param 2 is the date.
elseif(args[1]==nilandargs[2]~=nil)then
localitem=args[2].."[[Category:Pages using vgrelease without a region]]"
table.insert(items,item)
-- Normal use cases, region/date pairs in 1/2, 3/4, 5/6, etc.
else
locali=1
localj=2
while(args[i]andargs[j])do
locallabel=getLocalLabel(args[i]);

-- Didn't find a local label? Check for country data.
if(label==nil)then
label=getCountryData(frame,args[i])

-- Found something? Build a sitelink with it.
if(label~=nil)then
label="[["..label.."|"..args[i].."]]"
else
label=args[i]
end
end

localitem="<span style=\ "font-size:95%;\ "> "..label..":</span>"..args[j]
table.insert(items,item)

i=i+2
j=j+2
end
end

-- Add known parameters of Module:List to the table
fork,vinpairs(args)do
if(knownargs[k]==true)then
items[k]=v
end
end

localout=list.makeList(listformat,items)

-- Set message for invalid parameters.
localparameterMsg="[[Category:Pages using vgrelease with named parameters|_VALUE_]]"

-- Preview message.
if(frame:preprocess("{{REVISIONID}}")=="")then
parameterMsg="<div class=\ "hatnote\ "style=\ "color:red\ "><strong>Warning:</strong> unknown parameter\ "_VALUE_\ "(this message is shown only in preview).</div> "
end

-- Check for invalid parameters
fork,vinpairs(args)do
if(type(k)~='number'andknownargs[k]~=true)then
localmsg=parameterMsg:gsub('_VALUE_',k)
out=out..msg
end
end

returnout
end

returnp