文档图示 模块文档[查看] [编辑] [历史] [清除缓存]


注意事项

此模板页使用了Lua语言。
如果您对此模板页的使用方法有任何疑问,建议您先向熟悉Lua的用户求助,或是参见Lua的使用介绍
当疑问需要被关注时,请务必于互助客栈发起讨论。
此模板页已评为通行版。
此模块的内容已臻稳定,可正常使用于各处而不会出现错误。您现在可在分类页和其他维基百科资源中提及此模块来帮助新用户学习。
为了降低服务器负载和错误输出,修改此模块前应先进行沙盒测试,而不是重复的试错性编辑。
使用模板或直接引用此模块基本上都能正常运作,惟模块仍有部分尚无法改善的问题出现,请参见#已知的问题
由于模型发送到模块之前就已经先被MediaWiki解析,因此页面中的模板和魔术词被模块接收时是已解码的状态。如果您想要在模型中加入|,请使用{{!}}代替。
本模板支持正规表达式,请参见Lua官方的说明

简介

此模板可用来侦测和匹配页面中是否有指定的mw.ustring模型,并输出为自定义结果。

参数及使用方法

  • {{If in page|模型|存在時的輸出值|不存在時的返回值|page=|subst=}}
  • {{#invoke:If in page|main|模型|存在時的輸出值|不存在時地返回值|page=|subst=}}

示例

侦测和匹配当前页面中是否存在模型,并输出自定义结果:
{{If in page|模型|存在時輸出的結果|不存在時輸出的結果}}
侦测和匹配指定页面中是否存在模型,并输出自定义结果:
{{If in page|模型|存在時輸出的結果|不存在時輸出的結果|page=頁面}}

参数资料

以下是该模板的模板数据,适用于可视化编辑器等工具。

If in page模板数据

无描述。

模板参数[编辑模板数据]

此模板首选参数不换行的行内格式。

参数描述类型状态
模型1

一个能被mw.ustring.match有效侦测和匹配的模型。

内容必需
存在值2

可在页面中侦测到模型的输出值。

内容推荐
不在值3

无法在页面中侦测到模型的输出值。

内容推荐
页面page

在指定页面上侦测模型,而非在当前的页面。

页面名称推荐
替换subst

If set, then value if present will have %n replaced with capture groups, see doc

布尔可选

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

function p.match(args)
	if not args["page"] then
		args.page = mw.title.getCurrentTitle().fullText
	end
	local page = mw.title.new(args.page)
	if not page then
		return args["3"] or ""
	end
	local content = page:getContent()
	if not content then
		return args["3"] or ""
	end
	if mw.ustring.match(content, args["1"] or "") then
		if args["subst"] then
			local pattern = args["1"] or ""
			if mw.ustring.sub(pattern, 1, 1) ~= "^" then
				pattern = "^.-" .. pattern
			end
			if mw.ustring.sub(pattern, -1) ~= "$" then
				pattern = pattern .. ".*$"
			end
			local out = mw.ustring.gsub(content, pattern, args["2"] or "")
			return out
		else
			return args["2"] or ""
		end
	else
		return args["3"] or ""
	end
end

function p.main(frame)
	local args = getArgs(frame)
	return p.match(args)
end

return p