跳转到内容

模組:Vgr

被永久保护的模块
维基百科,自由的百科全书

这是本页的一个历史版本,由風中的刀劍留言 | 贡献2016年1月8日 (五) 15:21编辑。这可能和当前版本存在着巨大的差异。

local labelList = {
	
	{'KR', '-{zh-cn:韩国; zh-tw:南韓;}-'};
	{'JP', '日本'};
	{'WW', '全球'};
	{'NA', '北美'};
	{'PAL', '[[PAL区|PAL]]'};
	{'EU', '欧洲'};
	{'AU', '澳-{}-洲'}; -- 兼容{{Vgrelease new}}的使用参数
	{'AUS', '澳-{}-洲'}; -- 兼容{{Vgrelease}}的使用参数
	{'CN', '[[中国大陆|大陆]]'};
	{'TWHK', '台港'};
	{'TW', '台湾'};
	{'HK', '香港'};
	{'SEA', '东南亚'};
	{'SG', '新加坡'};
	{'MY', '马来西亚'};
	{'INT', '[[国际版]]'};

}

require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
local p = {}

local function label(inp)
	
	if inp == nil then
		return '<span class="error">请检查输入</span>'
	end
	
	for i, v in ipairs(labelList) do
		if inp == v[1] then
			return v[2]
		end
	end

	if string.find(inp, '[A-Z][A-Z][A-Z]?') then
		return '<span class="error">请检查地区代码</span>'
	end

	return inp
end

local function data(inp)
	local months = {'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'}
	
	if inp == nil then
		return '<span class="error">请检查输入</span>'
	end
	
	-- Matches July 10, 2005
	if string.find(inp, '^%a+ %d%d?, %d%d%d%d.*$') then
		for i, v in ipairs(months) do
			local pattern = '^(' .. v .. ' %d%d?, %d%d%d%d)(.*)$'
			if string.find(inp, pattern) then
				local _, _, a, b = string.find(inp, pattern)
				return mw.language.new('zh'):formatDate('Y年Mj日', a, nil) .. b
			end
		end
	end

	-- Matches 10 July 2005
	if string.find(inp, '^%d%d? %a+ %d%d%d%d.*$') then
		for i, v in ipairs(months) do
			local pattern = '^(%d%d? ' .. v .. ' %d%d%d%d)(.*)$'
			if string.find(inp, pattern) then
				local _, _, a, b = string.find(inp, pattern)
				return mw.language.new('zh'):formatDate('Y年Mj日', a, nil) .. b
			end
		end
	end

	-- Matches 2005-07-10
	if string.find(inp, '^%d%d%d%d%-%d%d%-%d%d.*$') then
		local _, _, a, b = string.find(inp, '^(%d%d%d%d%-%d%d%-%d%d)(.*)$')
		return mw.language.new('zh'):formatDate('Y年Mj日', a, nil) .. b
	end

	-- Matches July 2005
	if string.find(inp, '^%a+ %d%d%d%d.*$') then
		for i, v in ipairs(months) do
			local pattern = '^(' .. v .. ' %d%d%d%d)(.*)$'
			if string.find(inp, pattern) then
				local _, _, a, b = string.find(inp, pattern)
				return mw.language.new('zh'):formatDate('Y年M', a, nil) .. b
			end
		end
	end

	-- Matches 2005-07
	if string.find(inp, '^%d%d%d%d%-%d%d.*$') then
		local _, _, a, b = string.find(inp, '(%d%d%d%d%-%d%d)(.*)')
		return mw.language.new('zh'):formatDate('Y年M', a, nil) .. b
	end
	
	-- Matches 2005, 2005<tag />, 2005 (...), 2005(...) and 2005<ref/>
	if string.find(inp, '^%d%d%d%d% *%f[<((\127].*$') then
		local _, _, a, b = string.find(inp, '(%d%d%d%d)(.*)')
		return mw.language.new('zh'):formatDate('Y年', a, nil) .. b
	end
	
	-- None of cases matched
	return inp

end

local function itemBuilder(args, l, d)
	
	l, d = label(l), data(d)
	
	if args.s == '2' then
		return string.format('<li>%s(%s)</li>\n', d, l)
	end
	
	return string.format('<li>%s:%s</li>\n', l, d)
	
end

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

function p._main(args)
	-- Main module code goes here.
	local ret = ''
	
	for i, v in ipairs(labelList) do
		if args[v[1]] then
			ret = ret .. itemBuilder(args, v[1], args[v[1]])
		end
	end
		
	for i = 1, math.huge, 2 do
		if args[i] or args[i+1] then
			ret = ret .. itemBuilder(args, args[i], args[i+1])
		else
			break
		end
	end

	if ret ~= '' then
		ret = '<ul style="list-style: none none; line-height: inherit; margin: 0px;">\n' .. ret .. '</ul>'
	else
		ret = nil
	end
	
	return ret
end

return p