如果你看到本段文字,说明该页面未正常加载全局JS,部分功能无法使用,请点击 刷新 重新加载页面。
如果打开页面显示缩略图创建出错,请点击刷新或页面右上WIKI功能中的刷新按钮清除页面缓存并刷新,如果还有问题,请多尝试几次。
全站通知:
模块:测试/用户:141211391
刷
历
编
< 模块:测试
跳到导航
跳到搜索
此模块的文档可以在模块:测试/用户:141211391/doc创建
local p = {}
--------------------------------------------------
-- 公开函数
--------------------------------------------------
p['舰娘列表'] = function()
local normal_data = callAskQuery('[[分类:舰娘||联动舰娘||META舰娘||方案舰娘]]', {
'?稀有度',
'?类型',
'?阵营',
'?分组',
'?和谐名',
link = 'none',
sort = '稀有度编号,编号',
headers = 'hide',
format = 'table',
order = 'desc',
limit = 1000
})
local result = ''
for _, item in ipairs(normal_data) do
result = result..normal_parseData(item)
end
return result
end
--------------------------------------------------
-- 主要过程
--------------------------------------------------
--将舰娘数据解析为图标
function normal_parseData(item)
local frame = mw.getCurrentFrame()
local output = '<div class="jntj-1 divsort" data-param0="0" data-param1="'
if item['类型'] == '驱逐' or item['类型'] == '轻巡' or item['类型'] == '重巡' or item['类型'] == '超巡' or item['类型'] == '运输' then
output = output..'前排先锋'
elseif item['类型'] == '潜母' or item['类型'] == '潜艇' then
output = output..'潜艇'
else output = output..'后排主力'
end
output = output..','..item['类型']..'" data-param2="'..item['稀有度']..'" data-param3="'
if item['分组'] == 'META' then
output = output..'其他,'
else
output = output..''
end
output = output..''..item['阵营']..'" data-param4="'..item['分组']..'"><div class="jntj-2">[[文件:'..item[1]..'头像.jpg|60px|link='..item[1]..']]<div class="jntj-3">'
if item['分组'] == 'META' then
output = output..'[[文件:舰娘头像外框'..item['稀有度']..'META.png|60px|link='..item[1]..']]'
else
output = output..'[[文件:舰娘头像外框'..item['稀有度']..'.png|60px|link='..item[1]..']]'
end
output = output..'</div></div><span class="jntj-4">'
if string.len(item['和谐名']) > 0 then
output = output..'[['..item[1]..'|'..item[1]..'('..item['和谐名']..')]]</span></div>'
else
output = output..'[['..item[1]..']]</span></div>'
end
return output
end
p['改造舰娘列表'] = function()
local retrofit_data = callAskQuery('[[分类:舰娘]][[分类:改造]]', {
'?改造后稀有度',
'?改造后类型',
'?阵营',
'?和谐名',
link = 'none',
sort = '稀有度编号,编号',
headers = 'hide',
format = 'table',
order = 'desc',
limit = 1000
})
local result = ''
for _, item in ipairs(retrofit_data) do
result = result..retrofit_parseData(item)
end
return result
end
--------------------------------------------------
-- 主要过程
--------------------------------------------------
--将舰娘数据解析为图标
function retrofit_parseData(item)
local frame = mw.getCurrentFrame()
local output = '<div class="jntj-1 divsort" data-param0="0" data-param1="'
if item['改造后类型'] == '驱逐' or item['改造后类型'] == '轻巡' or item['改造后类型'] == '重巡' or item['改造后类型'] == '超巡' or item['改造后类型'] == '运输' then
output = output..'前排先锋'
elseif item['改造后类型'] == '潜母' or item['改造后类型'] == '潜艇' then
output = output..'潜艇'
else output = output..'后排主力'
end
output = output..','..item['改造后类型']..'" data-param2="'..item['改造后稀有度']..'" data-param3="'..item['阵营']..'" data-param4="改造"><div class="jntj-2">[[文件:'..item[1]..'改头像.jpg|60px|link='..item[1]..']]<div class="jntj-3">[[文件:舰娘头像外框'..item['改造后稀有度']..'.png|60px|link='..item[1]..']]</div></div><span class="jntj-4">'
if string.len(item['和谐名']) > 0 then
output = output..'[['..item[1]..'|'..item[1]..'('..item['和谐名']..').改]]</span></div>'
else
output = output..'[['..item[1]..'|'..item[1]..'.改]]</span></div>'
end
return output
end
--------------------------------------------------
-- 私有函数
--------------------------------------------------
--解析传入参数——去空白符+转换数字
function parseArgument(frame)
local arg = {}
for k, v in pairs(frame.args) do
arg[k] = tonumber(v) or mw.text.trim(v)
end
return arg
end
--调用#ask语义查询,并将结果解析为table
function callAskQuery(title, args)
local frame = mw.getCurrentFrame()
args.format = 'table'
local html = frame:callParserFunction('#ask:'..title, args)
--返回解析结果的key
local keys = {}
keys[1] = '' --#ask的参数#1是title
for i, v in ipairs(args) do
keys[i+1] = mw.text.trim(v:sub(2))
end
local data = {}
for tr in html:gmatch('<tr .-</tr>') do
if tr:match('smwfooter') then break end
local item = {}
local i = 1 --#1单元格是页面名称
for td in tr:gmatch('<td.->(.-)</td>') do
td = mw.text.trim(td)
item[i] = td
if keys[i] then item[ keys[i] ] = td end
i = i + 1
end
table.insert(data, item)
end
return data
end
return p