打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
登录后可编辑和发表评论。

Module:Template Repeat

来自Vocawiki

此模块的文档可以在Module:Template Repeat/doc创建

local p = {}
local getArgs = require('Module:Arguments').getArgs

function parse_arg(arg)
	if arg == nil or arg == '' then
		return nil
	end
	arg = mw.text.unstripNoWiki(arg)
	arg = mw.text.decode(arg)
	return arg
end

function p._main(frame, args)
	local args_list = {}
	local tl = parse_arg(args['template'] or args['tl'] or '')
	for k, v in pairs(args) do
		local split_pos = string.find(k, "-")
		if split_pos then
			local arg_group = tonumber(string.sub(k, 1, split_pos - 1))
			if arg_group ~= nil then
				local arg_key = string.sub(k, split_pos + 1)
				if args_list[arg_group] == nil then
					args_list[arg_group] = {}
				end
				args_list[arg_group][arg_key] = v
			end
		end
	end
	local arg_groups = {}
	for arg_group, _ in pairs(args_list) do
		table.insert(arg_groups, arg_group)
	end
	table.sort(arg_groups)
	local output = {}
	local separator_default = parse_arg(args['separator'] or '') or ''
	for i, arg_group in ipairs(arg_groups) do
		args_sub = args_list[arg_group]
		local frame_child = frame:newChild({args = args_sub})
		local separator = ''
		if i < #arg_groups then
			separator = parse_arg(args['separator-' .. arg_group] or '') or separator_default
		end
		table.insert(output, frame_child:preprocess(tl .. separator))
	end
	return table.concat(output, '')
end

function p.main(frame)
	return p._main(frame, getArgs(frame, { removeBlanks = false }))
end

return p