模块: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