◆42Lab是非盈利性、非官方的云图计划维基百科。 ◆诚邀指挥官们加入编辑部共同建设wiki。点这里加入42Lab ◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易! ◆有任何意见、建议、纠错,欢迎在任意评论区评论 ◆编辑讨论QQ群741423564 微博@GFwiki少前百科 欢迎您 |
模块:AvgNav
来自42LAB
可在模块:AvgNav/doc创建此模块的帮助文档
local p = {}
local data
local root
local f
local function filepath(scriptId)
return f:callParserFunction('filepath', 'Avg_' .. scriptId .. '.json')
end
local function label(name, describe)
if describe == nil then
return '<span>' .. name .. '</span>'
end
return f:expandTemplate{title = 'popup', args = {
['替代文字'] = name, ['内容'] = describe
}}
end
local function list(avg, parent)
for _, story in ipairs(avg) do
if story.script_id then
(parent or root):tag('div'):addClass('avg-entrance'):attr{
['data-src'] = filepath(story.script_id),
['data-number'] = story.number
}:wikitext(label(story.name, story.describe))
elseif story.script_ids then
local group = (parent or root):tag('div'):addClass('avg-entrance-group')
group:wikitext(label(story.name, story.describe))
for i, script_id in ipairs(story.script_ids) do
group:tag('div'):addClass('avg-entrance')
:attr('data-src', filepath(script_id))
:wikitext('<span>' .. tostring(i) .. '</span>')
end
end
end
end
local function listChapters()
for i, chapter in ipairs(data.avg) do
root:tag('div'):addClass('avg-chapter-title'):wikitext(data.chapter_names[i])
list(chapter)
end
end
local function main()
f = mw.getCurrentFrame()
root = mw.html.create('div'):addClass('avg-entrances')
root:tag('div')
:addClass('avg-nav-header')
:attr('data-name-en', data.name_en)
:wikitext(data.name)
local isMain = data.id > 0 and data.id < 100
if isMain then
root:tag('div'):addClass('avg-nav-subheader'):wikitext('标准')
local line = root:tag('div'):addClass('avg-storyline')
list(data.avg, line)
root:tag('div'):addClass('avg-nav-subheader'):wikitext('暗域')
line = root:tag('div'):addClass('avg-storyline')
list(data.hard_avg, line)
elseif data.chapter_names then
listChapters()
else
list(data.avg)
end
return tostring(root)
end
function p.main(frame)
data = mw.text.jsonDecode(frame.args[1])
return main()
end
return p