local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
return p._main(frame, args)
end
function p._main(frame, args)
if not frame then
frame = mw.getCurrentFrame()
end
local id = args[1] or ''
local title = args[2] or mw.title.getCurrentTitle().text
if id ~= '' then
-- 链接到一个页面
local url = 'https://vndb.org/v' .. mw.uri.encode(id, 'WIKI')
return '<br>[' .. url .. ' ' .. title .. ']'
else
-- 链接到多个页面
local vdata, pdata = {}, {}
for k, v in pairs(args) do
local vid = string.match(k, '^v(%d+)$')
if vid and vid ~= '' and v ~= '' then
table.insert(vdata, {num = tonumber(vid), str = vid, val = v})
end
local pid = string.match(k, '^p(%d+)$')
if pid and pid ~= '' and v ~= '' then
table.insert(pdata, {num = tonumber(pid), str = pid, val = v})
end
end
table.sort(vdata, function(a, b) return a.num < b.num end)
table.sort(pdata, function(a, b) return a.num < b.num end)
local vlist, plist = {}, {}
for _, item in ipairs(vdata) do
local url = 'https://vndb.org/v' .. mw.uri.encode(item.str, 'WIKI')
table.insert(vlist, string.format('<li>[%s %s]</li>', url, item.val))
end
for _, item in ipairs(pdata) do
local url = 'https://vndb.org/p' .. mw.uri.encode(item.str, 'WIKI')
table.insert(plist, string.format('<li>[%s %s]</li>', url, item.val))
end
if #vlist == 0 and #plist == 0 then
return ''
else
return '<ul>' .. table.concat(vlist) .. table.concat(plist) .. '</ul>'
end
end
end
return p