Help:解析器函数

来自Arcaea中文维基

解析器函数与变量相似,但需要一个或多个参数(技术上讲,任何需要参数的魔术字都是解析器函数),并且名称有时以井号(hash)开头,以与模板区分开来。

#expr

使用下面这个函数计算并返回数学表达式的结果。

{{#expr: 表达式 }}

使用布尔代数时,0表示false,其他任何非0数值(无论正负)均表示true。

空表达式返回空值,错误的表达式返回错误信息。

置于数字前的加减号会被视为正负号而不会报错。

以下是支持的运算符。

运算符的说明参见meta-wiki

类型 运算符号
分组 ( )
数字 1234.5   e (2.718)   pi (3.142)
二进制操作者e 一元 +,-
Unary not ceil trunc floor abs exp ln sin cos tan acos asin atan
二进制 ^
* / div mod
+ -
取整 round
逻辑 = != <> > < >= <=
and
or

#if

此函数判断一个字符串是否为空。只包含半角空格的字符串被视为空字符串,这意味着,全角空格( )是不被当做空字符串的。

{{#if: 字符串 | 空值返回 | 非空值返回 }}

当字符串是空值时返回第二个参数,当字符串不是空值时返回第三个参数。 当字符串填写参数来判断是否赋值时,需要添加管道符:

{{#if: {{{参数名|}}} | 空值返回 | 非空值返回 }}

返回值不一定需要填写可以为空,这样就不会返回内容。这对于下面判断类型的解析器函数一致适用。

#ifeq

此函数判断两个输入字符串是否相同,并根据结果输出两个字符串的其中一个。如果需要更多的比较和输出字符串,请考虑使用#switch

{{#ifeq: 字符串1 | 字符串2 | 相同返回 | 不相同返回 }}

注意:区分大小写。

#switch

此函数将一个输入值与多个测试用例进行比较,如果找到匹配项,则返回关联的字符串。

{{#switch: 输入值 
 | 值1 = 输入值是值1时返回的内容 
 | 值2 = 输入值是值2时返回的内容
 | 当找不到一样的值时返回的内容 }}

还有一种高级的用法可以支持更多功能。

{{#switch: 1 
 | {{#ifexpr: 表达式 | 1 | 0 }} =
 | {{#if: 页面 | 1 | 0 }} = 返回值1
 | {{#ifeq: 字符串1 | 字符串2 | 1 | 0 }} = 返回值2 }}

#iferror

此函数以一个字符串为输入,然后在两条预选结果中取其一而返回。

{{#iferror: 字符串 | error返回 | correct返回 }}

这个函数可以认定解释器函数和模板等的错误。

{{#iferror: {{#expr: 表达式 }} | error | correct }}

与其他不同的是,如果不填写correct返回的内容,那么correct返回的内容会是被测字符串本身。

#ifexpr

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

{{#ifexpr: 表达式 | true返回 | false返回 }}

#ifexist

此函数将一组字符串作为输入,并翻译成页面标题,然后根据在本地wiki上是否存在该页面而返回对应的值。

{{#ifexist: 页面名 | 存在时返回 | 不存在时返回 }}

#rel2abs

此函数将相对文件路径转换为绝对文件路径。

{{#rel2abs: 转换后的页面路径 | 转换前的页面路径 }}

在前面一个参数中,有两种参数会进行转换。

. 当前级别
.. 上一级

例如:

转换的页面 转换前 转换后
用户:用户名/sandbox/模板:测试 ./style.css 用户:用户名/sandbox/模板:测试/style.css
用户:用户名/sandbox/模板:测试 ../style.css 用户:用户名/sandbox/style.css

#time

此解析器函数需要日期和/或时间,并根据给定的语法设置其格式。可以指定日期/时间对象;默认值是魔法词的值,即页面最后呈现到 HTML 的时间。

#timel

local参数设置为true时,此函数与#time相同,因此它始终使用 wiki 的本地时间。

#titleparts

此函数根据斜杠将页面标题分隔为段,然后返回其中一些段作为输出。

{{#titleparts: 页面路径 | 要返回的段数 | 第一个返回段 }}