模組:Vgr
外观
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
if string.find(inp, '^[(19[7-9])(20[0-2])]%d%f[%D].*$') 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 = '<!-- Generated by {{Vgrelease}}. -->' .. -- 供[[Module:Infobox VG]]自动判别格式,请勿移除此HTML注释
'<ul style="list-style: none none; line-height: inherit; margin: 0px;">' .. ret .. '</ul>'
else
ret = nil
end
return ret
end
return p