置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

User:冰阅/图书馆/帮助:扩展:解析器函数(下)

猛汉♂百科,万男皆可猛的百科全书!转载请标注来源页面的网页链接,并声明引自猛汉百科。内容不可商用。
跳到导航 跳到搜索

上接User:冰阅/图书馆/帮助:扩展:解析器函数(上)

#ifexpr

此函数会判断数学表达式并根据其布尔值结果返回对应的字符串:

{{#ifexpr: expression | value if true | value if false }}

这里"expression"输入串将原封不动的作为上面#expr的参数进行调用,且表达式运算符是通用的,返回值也将作为布尔表达式进行处理。

输入表达式为空时将视为false

{{#ifexpr: | yes | no}}no

如上面所提,0将视为false,非零值将视为true,因此这个函数与下面的仅用#ifeq#expr的表述等价:

{{#ifeq: {{#expr: expression }} | 0 | value if false | value if true }}

除了下面这种情况:所输入表达式为空或者是一个错误表达式(空串会返回一条错误信息,而它不等于0,所以在后者我们会得到"value if true")。

{{#ifexpr: = | yes | no }}Expression error: Unexpected = operator.

相对的

{{#ifeq: {{#expr: = }} | 0 | no | yes }}yes

两个返回值都可以省略,当合适的对应分支被省略时,函数不输出:

{{#ifexpr: 1 > 0 | yes }}yes

{{#ifexpr: 1 < 0 | yes }}

{{#ifexpr: 0 = 0 | yes }}yes

{{#ifexpr: 1 > 0 | | no}}

{{#ifexpr: 1 < 0 | | no}}no

{{#ifexpr: 1 > 0 }}

[搬运者注:以下用法在萌娘百科里似乎会因为触发过滤器而导致WAF,无法保存和预览,请谨慎使用]

支持布尔值运算的等于/不等于的运算符。

{{#ife​xpr: 0 = 0 o​r 1 = 0 | yes}}yes

{{#ife​xpr: 0​ = 0 an​d 1 = 0 | |​ no}}no

#iferror

这个函数接收一个输入字符串,返回两个结果中的一个。如果输入字符串包含一个由其他解析器函数(比如#expr#time#rel2abs)、模板错误(比如模板循环和模板递归)或其他解释器“软错误”生成的class="error"的HTML对象,那么视为真。

{{#iferror: test string | value if error | value if correct }}

待返回字符串参数可以省略。若省略"correct"(正确)字符串参数,则在"test string"(测试字符串)不出错的情况下函数将返回被测字符串本身。若省略"error"(错误)字符串参数,则函数将在被测字符串出错时返回空字符串:

{{#iferror: {{#expr: 1 + 2 }} | error | correct }}correct
{{#iferror: {{#expr: 1 + X }} | error | correct }}error
{{#iferror: {{#expr: 1 + 2 }} | error }}3
{{#iferror: {{#expr: 1 + X }} | error }}error
{{#iferror: {{#expr: 1 + 2 }} }}3
{{#iferror: {{#expr: 1 + X }} }} → '
{{#iferror: {{#expr: . }} | error | correct }}correct
{{#iferror: <strong class="error">a</strong> | error | correct }}error