置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:交叉颜色

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [查看] [编辑] [历史] [刷新]

本模块用于执行{{交叉颜色}}模板,请到模板页阅读具体用法。

--协力:User:サンムル
local p = {}

function p._main(args,toggle)
	local texts = {}
	local colors = {}
	
	for k, v in pairs(args) do
		if type(k) == 'string' then --如果是字符串则匹配c开头
			local index = k:match "^c(%d+)$"
			if index then colors[tonumber(index)] = v end
		else --是数字
			texts[k] = v
		end
	end
	colors[0] = colors[#colors] -- 余数等于0时输出除数域
	
	--渲染部分
	local root = mw.html.create 'span'
	for i, v in ipairs(texts) do
		root:tag 'span'
			:wikitext(v)
			:css {color = colors[i%#colors],
				["data-color"] = toggle and color}
			:addClass(toggle and 'colorToggleBlock')
	end
	return root
end



function p.main ( frame )
	local wrappers = { ['Template:交叉颜色'] =  true, ['Template:交叉颜色护眼版'] = true }
	local toggle = frame.args["toggle"]
	local parent = frame:getParent()
	if parent and wrappers[parent:getTitle()] then
		frame = parent
	end
	local args = frame.args
	return p._main(args,toggle)
end

return p