Module:NavLevel

来自滚动的天空Wiki
文档图示 模块文档[查看] [编辑] [查看历史] [清除缓存]

本模块用于{{关卡}}模板,会根据Special:CargoTables/Level的数据来生成一个导航框。

上述文档内容嵌入自Module:NavLevel/doc编辑 | 历史
编者可以在本模块的沙盒创建 | 镜像和测试样例创建页面进行实验。
请将模块自身所属的分类添加在文档中。本模块的子页面
local p = {}
function p.getData()
	local newindex = require 'module:others'.newindex
	
	local d = mw.ext.cargo.query('Level', 'Level.firstcameversion,Level.stars,Level.name_zhs')
	-- 默认按第一个字段排序
	local data = {}
	data.title = {content='[[关卡]]'}
	data.name = '关卡'
	
	local lists = {}
	for i, v in ipairs(d) do
		local stars = tonumber(v['Level.stars']) or -1
		local name = v['Level.name_zhs']
		lists[stars] = lists[stars] or {}
		table.insert(lists[stars], name)
	end
	
	for stars, v in ipairs(lists) do
		newindex(data, stars..'星', stars, 'group', 'content')
		local ul = mw.html.create 'ul'
		-- table.sort(v) cargo已经完备
		for i2,name in ipairs(v) do
			ul:tag 'li'
				:wikitext('[['..name..']]')
		end
		newindex(data, tostring(ul), stars, 'list', 'content')
	end
	
	table.insert(data, {
		group={
			content='饭制收录'
		},
		list={
			content='\n*[[洞穴]]'
		}
	})
	
	return data
end

function p.main(frame)
	local navbox = require 'Module:Navbox'
	local data = p.getData()
	local result = navbox.new({data=data, args=frame.args or {}})
	result:processArgs()
	return result:render()
end

return p