Modul:Videoherní vydání

Tento modul závisí na dalších modulech:

Tento modul obsahuje kód pro šablonu {{Videoherní vydání}}. Pro použití šablony Videoherní vydání vizte instrukce na stránce Videoherní vydání.

Modul byl převzat z anglické Wikipedie, dokumentaci vizte na Video game release, a znatelně upraven pro potřeby české Wikipedie.

require('Modul:No globals')

local getArgs = require('Modul:Arguments').getArgs
local list = require('Modul:List');
local p = {}

local knownargs = {
	['formát'] = true,
}

local labels = {
-- OBLAST
	['SA'] = "[[Severní Amerika|SA]]",
	['EU'] = "[[Evropa|EU]]",
	['AUS'] = "[[Australasie|AUS]]",
	['PAL'] = "[[PAL|PAL]]",
	['JVAS'] = "[[Jihovýchodní Asie|JVAS]]",
	['AS'] = "[[Asie|AS]]",
	['JA'] = "[[Jižní Amerika|JA]]",
	['OC'] = "[[Oceánie|OC]]",
	['SVĚT'] = "[[Svět|svět]]",
-- ZEMĚ (mezinárodní definice kódů státu ISO 3166-1)
	['CA'] = "[[Kanada|Kanada]]",
	['CN'] = "[[Čína|Čína]]",
	['CZ'] = "[[Česko|ČR]]",
	['DE'] = "[[Německo|Německo]]",
	['FR'] = "[[Francie|FR]]",
	['GB'] = "[[Spojené království|VB]]",
	['HK'] = "[[Hongkong|HK]]",
	['JP'] = "[[Japonsko|JP]]",
	['KR'] = "[[Jižní Korea|KR]]",
	['RU'] = "[[Rusko|RU]]",
	['TW'] = "[[Tchaj-wan|TW]]",
	['US'] = "[[Spojené státy americké|USA]]",
}

local function getLocalLabel(alias)
	local label = labels[string.upper(alias)]
	
	return label
end

local function splitLabel(s)
	local islist = true
	local res = {}
	for k,v in ipairs(mw.text.split(s or '', '%s*/%s*')) do
		local v1 = v:match('^%s*([A-Z][A-Z][A-Z]?[A-Z]?)%s*$')
		if v1 then
			table.insert(res,v1)
		else
			local v2 = v:match('^%s*(%[%[[^%[%]|]*|[A-Z][A-Z][A-Z]?[A-Z]?%]%])%s*$')
			if v2 then
				table.insert(res,v2)
			else
				islist = false
			end
		end
	end
	return islist and res or {s}
end

function p.main(frame)
	local args = getArgs(frame)
	local listformat = args['formát']
	if (listformat == nil or listformat == "") then
		listformat = "unbulleted"
	end
	local items = {}

	if (args[1] == nil and args[2] ~= nil) or (args[1] ~= nil and args[2] == nil) then
		local item = '<span style="font-size: 90%;" class="error">Chybně oddělené či prázdné parametry!</span> ' ..  "[[Kategorie:Údržba:Články používající šablonu videoherní vydání s chybami v parametrech]]"
		table.insert(items, item)
		-- Normal use cases, region/date pairs in 1/2, 3/4, 5/6, etc.
	else
		local i = 1
		local j = 2
		while (args[i] and args[j]) do
			local labels = {}
			for k,v in ipairs(splitLabel(args[i])) do
				local label = getLocalLabel(v);
                    
                    if (label == nil) then
                        local item = '<span style="font-size: 90%;" class="error">Neplatná oblast!</span>' ..  "[[Kategorie:Údržba:Články používající šablonu videoherní vydání s neplatnou oblastí]]"
                        table.insert(items, item)
                    end
		
				table.insert(labels, label)
			end
   
			local item = args[j] .. "&nbsp;<sup><small>" .. table.concat(labels,'/') .. "</small></sup>"
			table.insert(items, item)

			i = i + 2
			j = j + 2
			
			if (args[i] == nil and args[j] ~= nil) or (args[i] ~= nil and args[j] == nil) then
				local item = '<span style="font-size: 90%;" class="error">Chybně oddělené či prázdné parametry!</span> ' ..  "[[Kategorie:Údržba:Články používající šablonu videoherní vydání s chybami v parametrech]]"
				table.insert(items, item)
			end
		
		end
	end
					
	-- Add known parameters of Module:List to the table
	for k, v in pairs(args) do
		if (knownargs[k] == true) then
			items[k] = v
		end
	end

	local out = list.makeList(listformat, items)

	return out
end

return p