Module:Images/autosplit

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

本模块用于{{机关列表}}模板,可以自动将文本分割成多个段落,并应用分栏样式。

上述文档内容嵌入自Module:Images/autosplit/doc编辑 | 历史
编者可以在本模块的沙盒创建 | 镜像和测试样例创建页面进行实验。
请将模块自身所属的分类添加在文档中。本模块的子页面
-- 用于自动识别含有标题的内容,分成多个段落。
local p = {}
local Images = require '模块:Images'

function p.split(str)
	local list = {{}}
	local index = 1
	for i in mw.text.gsplit(str, '\n') do
		if i:match '^==.-==$' then
			index = index + 1
		end
		local stringBuilder = list[index] or {}
		list[index] = stringBuilder 
		stringBuilder[#stringBuilder + 1] = i
	end
	return list
end

function p.convert_to_data(list, args)
	local data = {}
	for k, v in ipairs(list) do
		local section = table.concat(v, '\n')
		if section ~= '' then
			data[#data + 1] = {section = section}
		end
	end
	for k,v in pairs(args) do
		if type(k) == "string" then
			if k:match("^navbar%d+$") then
				data[tonumber(k:match("(%d+)"))].navbar = v
			end
		end
	end
	return data
end

function p.render(args)
	local content = args.content
	local config ={
		nonavbar=args.nonavbar,
		tag = args.tag,
		class = args.class
	}
	return Images.render(p.convert_to_data(p.split(content),args),config)
end

function p.main(frame)
	-- 用于直接从模块调用。
	return p.render(frame.args)
end

function p.autosplit(frame)
	-- 用于从模板调用。
	return p.render(frame:getParent().args)
end

return p