跳转到内容

模組:Infobox VG series

维基百科,自由的百科全书
local parameterList = {

	above = { 'title' },
	image = { 'image' },
	caption = { 'caption' },
	original = { 'original' },
	japanese = { 'japanese' },
	english = { 'english' },
	
	{ label = '[[电子游戏类型|类型]]'; 'genre' },
	{ label = '[[游戏开发者|开发]]'; 'developer' },
	{ label = '[[游戏发行商|发行]]'; 'publisher'},
	{ label = '创始人'; 'producer', 'creator', 'creater' },
	{ label = '编剧'; 'writer' },
	{ label = '美术'; 'artist'},
	{ label = '音乐'; 'composer' },	
	{ label = '[[游戏平台|平台]]'; 'platform', 'platforms' },
	{ label = '首版平台'; 'platform of origin' },
	{ label = '首发时间'; 'released', 'release' },
	{ label = '首作'; 'first release version', 'first release date' },
	{ label = '最新作'; 'latest release version', 'latest release date' },	
	{ label = '演绎产品'; 'spinoffs' },
	
}

local p = {}

local getArgs = require('Module:Arguments').getArgs
local infobox = require('Module:Infobox').infobox

local function getData(args, idx)
	for _, v in ipairs(parameterList[idx]) do
		if args[v] then	return args[v] end
	end
end

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	-- Main module code goes here.
	local list = {}
	local cont = 0
	
	list.captionstyle = 'text-align: center;'
	list.subheaderstyle = 'text-align: center; vetical-align: middle; font-weight:normal;'
	list.labelstyle = 'text-align: left; vetical-align: middle; white-space: nowrap;'
	
	list.above = getData(args, 'above') or tostring(mw.title.getCurrentTitle())
	if getData(args, 'original') then
		list.subheader1 = string.gsub(getData(args, 'original'), '^(..) *: *(.+)$', '<span lang="%1" xml:lang="%1">-{%2}-</span>') or getData(args, 'original')
	else
		list.subheader1 =  getData(args, 'japanese') and string.format('-{<span lang="ja" xml:lang="ja">%s</span>}-', getData(args, 'japanese')) 
	end
	list.subheader2 = getData(args, 'english') and string.format('-{<span lang="en" xml:lang="en" style="font-style: italic;">%s</span>}-', getData(args, 'english'))
	list.image = require('Module:InfoboxImage').InfoboxImage{ args = { 
		image = args.image, 
		sizedefault = 'frameless', 
		upright = '1.15',
	} }
	list.caption = list.image and getData(args, 'caption')
	
	for i, v in ipairs(parameterList) do
		local data = getData(args, i)
		if data then
			cont = cont + 1
			list['data'..cont] = data
			list['label'..cont] = v.label
			list['header'..cont] = v.header
		end
	end

	if (args['latest release version'] and args['latest release date']) then
		for i = #parameterList, 1, -1 do
			if list['label'..i] == '最新作' then
				list['data'..i] = args['latest release version'] .. '<br />' .. args['latest release date']
				break
			end
		end
	end

	if (args['first release version'] and args['first release date']) then
		for i = #parameterList, 1, -1 do
			if list['label'..i] == '首作' then
				list['data'..i] = args['first release version'] .. '<br />' .. args['first release date']
				break
			end
		end
	end

	return infobox(list)
end

return p