模組:If in page

本页使用了标题或全文手工转换
被永久保护的模块
维基百科,自由的百科全书
文档图示 模块文档[查看] [编辑] [历史] [清除缓存]


注意事項

此Template页使用了Lua語言。
如果您對此Template页的使用方法有任何疑問,建議您先向熟悉Lua的使用者求助,或是參見Lua的使用介紹
當疑問需要被關注時,請務必於互助客棧發起討論。
此Template页已評為通行版。
此模組的內容已臻穩定,可正常使用於各處而不會出現錯誤。您現在可在分类页和其他維基百科資源中提及此模組來幫助新使用者學習。
為了降低伺服器負載和錯誤輸出,修改此模組前應先進行沙盒測試,而不是重複的試錯性編輯。
使用模板或直接引用此模組基本上都能正常運作,惟模組仍有部分尚無法改善的問題出現,請參見#已知的問題
由於模型傳送到模組之前就已經先被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