模組:Vgr
外观
local labelList = {
{'KR', '-{zh-cn:韩国; zh-tw:南韓;}-'};
{'JP', '日本'};
{'WW', '全球'};
{'NA', '北美'};
{'PAL', '[[PAL区|PAL]]'};
{'EU', '欧洲'};
{'UK', '英国'};
{'AU', '澳-{}-洲'}; -- 兼容{{Vgrelease new}}的使用参数
{'AUS', '澳-{}-洲'}; -- 兼容{{Vgrelease}}的使用参数
{'CN', '<abbr title="中国大陆">大陆</abbr>'};
{'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, '^%d%d%d%d$') then
if tonumber(inp) >= 1947 and tonumber(inp) <= os.date('%Y') + 3 then
return inp .. '年'
end
end
-- Matches 2005<tag />, 2005 (...) and 2005(...)
if string.find(inp, '^%d%d%d%d *%f[<((\127].*$') then
local _, _, a, b = string.find(inp, '(%d%d%d%d)(.*)')
if tonumber(a) >= 1947 and tonumber(a) <= os.date('%Y') + 3 then
return mw.language.new('zh'):formatDate('Y年', a, nil) .. b
end
end
-- None of cases matched
return inp
end
local function itemBuilder(args, l, d)
if require('Module:Yesno')(args.nocc) then
l, d = label(l), require('Module:WikitextLC').converted(data(d), {'zh-hans', 'zh-hant'})
else
l, d = label(l), data(d)
end
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.
if args[1] == nil and args[2] and args[3] == nil then
return '<ul style="list-style: none none; line-height: inherit; margin: 0px;">' .. data(args[2]) .. '</ul>'
end
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