跳转到内容

模块: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:
5>3
文字{{#invoke:IfUtil|noTrim|expr|5>3|
Yes
|
No
}}文字
文字

Yes 文字

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

No 文字

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

Yes 文字

文字{{#ifeq:A|A|
Yes
|
No
}}文字
文字Yes文字
#ifeq:
A|B
文字{{#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

[编辑]