模組:IfUtil/doc

此頁面為 Module:IfUtil 的說明文件

ifnewhtmlline

判斷輸入字串中是否存在HTML的換行標籤

noTrim

由於預設的解析器函數(如{{#if:}}{{#ifexpr:}})會自動將輸入的參數做去除頭尾空白或斷行字元的操作

這對部分需要使替換引用結果出現換行又要避免出現尾部佔位符(如在換行後加入<!---->{{void}}等作法避免trim)是不可行的,或者需要較複雜的語法書寫方式(參見mw:Manual:Newlines_and_spaces#Trimming_on_expansion),這將使的模板代碼的可讀性和可維護性變得十分的差,並且增加模板展開調用甚至可能增加維基媒體伺服器的運作負擔。

因此為了解決{{#if:}}{{#ifexpr:}}{{if}}會自動將參數trim掉的問題,因此這個模組透過Module:Arguments將關閉參數trim功能提供了一個解決方案。

基本用法

{{#invoke:ifUtil|noTrim|命令|判斷參數|成立時返回|不成立時返回}}

簡易用法
  • {{#if:}}
    • {{#if:判斷|符合|否則}} (會自動trim
    • trim版:{{#invoke:ifUtil|noTrim|if|判斷|符合|否則}}
  • {{#ifeq:}}
    • {{#ifeq:內容1|內容2|相等|不同}} (會自動trim
    • trim版:{{#invoke:ifUtil|noTrim|eq|內容1|內容2|相等|不同}}
  • {{yesno}}
    • {{yesno|布林值|yes=為真時|no=為假時}} (會自動trim
    • trim版:{{#invoke:ifUtil|noTrim|yesno|布林值|為真時|為假時}}
  • {{#ifexpr:}}
    • {{#ifexpr:判斷式|為真時|為假時}} (會自動trim
    • trim版:{{#invoke:ifUtil|noTrim|expr|判斷式|為真時|為假時}}
  • {{#iferror:}}
    • {{#iferror:測試內容|有錯時|正常時}} (會自動trim
    • trim版:{{#invoke:ifUtil|noTrim|error|測試內容|有錯時|正常時}}
  • {{#ifexist:}}
    • {{#ifexist:頁面標題|存在時|沒有時}} (會自動trim
    • trim版:{{#invoke:ifUtil|noTrim|exist|頁面標題|存在時|沒有時}}
進階用法
  • {{yesno}}
    • 參數順序:{{#invoke:ifUtil|noTrim|yesno|布林值|為真時(yes)|為假時(no)|空白時(blank)|非法輸入時(def)|未定義時(¬)}}
  • if...elseif...else
    • {{#invoke:ifUtil|noTrim|expr|判斷式1|式1為真時|式1為假時}}
    • {{#invoke:ifUtil|noTrim|expr|判斷式1|式1為真時|elseif判斷式2|式2為真時}}
    • {{#invoke:ifUtil|noTrim|expr|判斷式1|式1為真時|elseif判斷式2|式2為真時|皆為假時}}
    • {{#invoke:ifUtil|noTrim|expr|判斷式1|式1為真時|elseif判斷式2|式2為真時|elseif判斷式3|式3為真時}}
    • {{#invoke:ifUtil|noTrim|expr|判斷式1|式1為真時|elseif判斷式2|式2為真時|elseif判斷式3|式3為真時|皆為假時}}
    • 以此類推,參數長度沒有上限 (除了WP:模板限制
比較

注意留意「文字」與「Yse/No」模板間的空格狀況

項目 使用Module:IfUtil#noTrim 使用Help:解析器函數
您所輸入的 您所看到的 您所輸入的 您所看到的
#ifexpr:
 
文字{{#invoke:IfUtil|noTrim|expr|5>3|
Yes
|
No
}}文字
文字

Yes 文字

文字{{#ifexpr:5>3|
Yes
|
No
}}文字
文字Yes文字
#ifexpr:
 
文字{{#invoke:IfUtil|noTrim|expr|5<3|
Yes
|
No
}}文字
文字

No 文字

文字{{#ifexpr:5<3|
Yes
|
No
}}文字
文字No文字
#ifeq:
 
文字{{#invoke:IfUtil|noTrim|eq|A|A|
Yes
|
No
}}文字
文字

Yes 文字

文字{{#ifeq:A|A|
Yes
|
No
}}文字
文字Yes文字
#ifeq:
 
文字{{#invoke:IfUtil|noTrim|eq|A|B|
Yes
|
No
}}文字
文字

No 文字

文字{{#ifeq:A|B|
Yes
|
No
}}文字
文字No文字
yesno:是
文字{{#invoke:IfUtil|noTrim|yesno||
Yes
|
No
}}文字
文字

Yes 文字

文字{{yesno||yes=
Yes
|no=
No
}}文字
文字Yes文字
#ifexist:
無此條目!!
文字{{#invoke:IfUtil|noTrim|exist|無此條目!!|
Yes
|
No
}}文字
文字

No 文字

文字{{#ifexist:無此條目!!|
Yes
|
No
}}文字
文字No文字
#ifexist:
WP:條目
文字{{#invoke:IfUtil|noTrim|exist|WP:條目|
Yes
|
No
}}文字
文字

Yes 文字

文字{{#ifexist:WP:條目|
Yes
|
No
}}文字
文字Yes文字

所有命令

命令 基本用法 描述
常規判斷
if {{#invoke:ifUtil|noTrim|if|判斷的字串|字串有值時返回|字串為空時返回}} {{#if:}}的不trim版本。
expr {{#invoke:ifUtil|noTrim|expr|expr表達式|表達式為真時返回|表達式為假時返回}} {{#ifexpr:}}的不trim版本。
內容比對
eq {{#invoke:ifUtil|noTrim|eq|判斷的字串|字串有值時返回|字串為空時返回}} {{#ifeq:}}的不trim版本。
eq|選項=Y/N {{#invoke:ifUtil|noTrim|eq|選項1=Y/N|選項2=Y/N|判斷的字串|字串有值時返回|字串為空時返回}} 特殊選項的{{#ifeq:}}。目前的選項有:
  • |trim=:不去除頭尾空格比較字串,預設為yes。
  • |i=:是否忽略大小寫,預設為no。
  • |unstrip=:是否忽略擴展標籤,預設為no。
  • |preprocess=:是將傳入的字串視為維基代碼並再做一次解析,預設為no。

可疊加多個選項。

eq|trim=no {{#invoke:ifUtil|noTrim|eq|trim=no|比對的字串1|比對的字串2|字串相等時返回|字串不同時返回}} 連輸入欲比對之字串都不trim{{#ifeq:}}。其會將「foo 」與「foo」視為相異。
eq|i=yes {{#invoke:ifUtil|noTrim|eq|i=yes|比對的字串1|比對的字串2|字串相等時返回|字串不同時返回}} 忽略大小寫的trim{{#ifeq:}}。其會將「FOO」與「foo」視為相同。
內容判斷
error {{#invoke:ifUtil|noTrim|error|欲除錯的內容|內容有錯誤時返回|內容沒有問題時返回}} {{#iferror:}}的不trim版本。
exist {{#invoke:ifUtil|noTrim|exist|要判斷是否存在的頁面標題|頁面存在時返回|頁面不存在時返回}} {{#ifexist:}}的不trim版本。
工具
yesno {{#invoke:ifUtil|noTrim|yesno|可代表布林值的字串|布林值為真時返回|布林值為假時返回}} {{yesno}}的不trim版本[a],同時也支援{{yesno}}的。|yes=|no=|def==|blank=等參數。(參見#進階用法#yesno
其他if-else類模板 {{#invoke:ifUtil|noTrim|<其他if-else類模板>|判斷用參數|成立時返回|不成立時返回}} 其他if-else類模板的不trim版本[a]
其他模板[b] {{#invoke:ifUtil|noTrim|<模板名稱>|參數1|參數2|參數3....}} 對於不支援或非if-else類的模板會有類似一般地調用模板的效果。
  1. ^ 1.0 1.1 這類模板如{{yesno}}同樣是透過普通的Help:解析器函數實現,因此仍會有trim的問題。此處透過嘗試接收{{模板名稱|判斷式|yes|no}}的輸出來決定要返回哪個未trim參數,若失敗則當作一般模板調用。
  2. ^ if-else模板測試失敗時的效果。

參數

下表按固定順序顯示了可用的位置參數(参数*)。對於每個命令,都會標記適用的參數集。例如,如果已給出命令 eq,那麼至少應給出 判斷式①比對式 兩個參數。

(必要) (必要) (ifeq必填) (可選) (可選) (可選) (可選)
{{#invoke:ifUtil|noTrim 命令 判斷式① 比對式 ①成立時 否則 判斷式② ②成立時 判斷式③... }}
其他參數 其他參數2 其他參數3...
if, expr,
eq,error,
exist,yesno,
其他if-else類模板,
其他模板
eq
if, expr,eq,error,
exist,yesno(yes參數),其他if-else類模板
if, expr, eq,error,
exist,yesno(no參數), 其他if-else類模板
expr, yesno(blank參數), 其他模板
expr, yesno(def參數), 其他模板 (可選 2nd, 3rd 等)
expr (可選 2nd, 3rd 等), yesno(¬參數), 其他模板

if2number