模块:CSS

来自SOKA CAFE

此模块的文档可以在模块:CSS/doc创建

local p = {}
local allowedNS = {
	[2] = true, -- User:
	[8] = true, -- MediaWiki:
	[10] = true -- Template:
}

function p.import_css(frame)
	local content = frame:getParent().args.content or frame.args.content
	if content ~= nil then
		return tostring(mw.html.create("span")
			:addClass("import-css")
			:attr("data-css", content)
			:attr("data-css-hash", mw.hash.hashValue("sha256", content)))
	end
	
	local title = frame:getParent().args[1] or frame.args[1]
	local titleObj = mw.title.new(title or "")
	local errorMsg
	
	if title == nil then errorMsg = "错误:没有向<code>{{[[T:CSS|CSS]]}}</code>模板提供参数。"
	elseif titleObj == nil then errorMsg = "错误:提供给<code>{{[[T:CSS|CSS]]}}</code>模板的参数“" .. frame:extensionTag("nowiki", title) .. "”不是一个有效的页面名。"
	elseif not titleObj.exists then errorMsg = "错误:提供给<code>{{[[T:CSS|CSS]]}}</code>模板的参数“[[" .. title .. "]]”对应的页面不存在。"
	elseif not allowedNS[titleObj.namespace] then errorMsg = "错误:提供给<code>{{[[T:CSS|CSS]]}}</code>模板的页面名“[[" .. title .. "]]”不属于User、MediaWiki或Template中的任何一个命名空间。"
	elseif titleObj.contentModel ~= "css" then errorMsg = "错误:提供给<code>{{[[T:CSS|CSS]]}}</code>模板的参数“[[" .. title .. "]]”对应页面的[[mw:Content handlers/zh|内容模型]]不是CSS。" end
	
	if errorMsg ~= nil then return
		tostring(mw.html.create("strong"):addClass("error"):wikitext(errorMsg)) ..
		"[[分类:引入CSS出错的页面]]"
	else
		content = titleObj:getContent()
		return tostring(mw.html.create("span")
			:addClass("import-css")
			:attr("data-css", content)
			:attr("data-css-hash", mw.hash.hashValue("sha256", content)))
	end
end

return p

-- 代码复制于https://backrooms.fandom.com/zh/wiki/Module:CSS