跳转到内容

Help:高级编辑:修订间差异

删除9,266字节 、​ 2024年4月19日 (星期五)
删除扩展
(完成)
(删除扩展)
第798行: 第798行:
</pre> || 模板静态替换
</pre> || 模板静态替换
|}
|}
== 扩展解析器函数 ==
=== #expr ===
使用下面这个函数计算并返回数学表达式的结果。
:<code><nowiki>{{#expr: 表达式 }}</nowiki></code>
使用布尔代数时,0表示false,其他任何非0数值(无论正负)均表示true。
空表达式返回空值,错误的表达式返回错误信息。
置于数字前的加减号会被视为正负号而不会报错。
以下是支持的运算符。
运算符的说明参见[https://meta.wikimedia.org/wiki/Help:Calculation meta-wiki]
{| class="wikitable"
|-
!  类型
!  运算符号
|-
|  分组 || style="word-spacing: 0.5em; font-weight: bold;" | <code>( )</code>
|-
|  数字 || <code>'''1234.5'''</code> &nbsp; <code>'''e'''</code>&nbsp;(2.718) &nbsp; <code>'''pi'''</code>&nbsp;(3.142)
|-
| ||  二进制操作者<code>'''e'''</code> 一元 <code>'''+'''</code>,<code>'''-'''</code>
|-
|  Unary || style="word-spacing: 0.5em; font-weight: bold;" | <code>not ceil trunc floor abs exp ln sin cos tan acos asin atan</code>
|-
| rowspan="3" |  二进制 || style="word-spacing: 0.5em; font-weight: bold;" | <code>^</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>* / div mod</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>+ -</code>
|-
|  取整 || style="word-spacing: 0.5em; font-weight: bold;" | <code>round</code>
|-
| rowspan="3" |  逻辑 || style="word-spacing: 0.5em; font-weight: bold;" | <code>= != <> > < >= <=</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>and</code>
|-
| style="word-spacing: 0.5em; font-weight: bold;" | <code>or</code>
|}
=== #if ===
此函数判断一个字符串是否为空。'''只包含半角空格的字符串被视为空字符串''',这意味着,全角空格<code> </code>是不被当做空字符串的。
:<code><nowiki>{{#if: 字符串 | 空值返回 | 非空值返回 }}</nowiki></code>
当字符串是空值时返回第二个参数,当字符串不是空值时返回第三个参数。
当字符串填写参数来判断是否赋值时,需要添加竖线:
:<code><nowiki>{{#if: {{{参数名|}}} | 空值返回 | 非空值返回 }}</nowiki></code>
返回值不一定需要填写可以为空,这样就不会返回内容。这对于下面判断类型的解析器函数一致适用。
=== #ifeq ===
此函数判断两个输入字符串是否相同,并根据结果输出两个字符串的其中一个。如果需要更多的比较和输出字符串,请考虑使用<code><nowiki>#switch</nowiki></code>。
:<code><nowiki>{{#ifeq: 字符串1 | 字符串2 | 相同返回 | 不相同返回 }}</nowiki></code>
注意:区分大小写。
=== #switch ===
此函数将一个输入值与多个测试用例进行比较,如果找到匹配项,则返回关联的字符串。
<pre>{{#switch: 输入值
| 值1 = 输入值是值1时返回的内容
| 值2 = 输入值是值2时返回的内容
| 当找不到一样的值时返回的内容 }}</pre>
还有一种高级的switch-true用法可以支持更多功能。
<pre>{{#switch: 1
| {{#ifexpr: 表达式 | 1 | 0 }} =
| {{#if: 页面 | 1 | 0 }} = 返回值1
| {{#ifeq: 字符串1 | 字符串2 | 1 | 0 }} = 返回值2 }}</pre>
=== #iferror ===
此函数以一个字符串为输入,然后在两条预选结果中取其一而返回。
:<code><nowiki>{{#iferror: 字符串 | error返回 | correct返回 }}</nowiki></code>
这个函数可以认定解释器函数和模板等的错误。
:<code><nowiki>{{#iferror: {{#expr: 表达式 }} | error | correct }}</nowiki></code>
与其他不同的是,如果不填写correct返回的内容,那么correct返回的内容会是被测字符串本身。
=== #ifexpr ===
此函数会判断数学表达式并根据其布尔值结果返回对应的字符串。
:<code><nowiki>{{#ifexpr: 表达式 | true返回 | false返回 }}</nowiki></code>
=== #ifexist ===
此函数将一组字符串作为输入,并翻译成页面标题,然后根据在本地wiki上是否存在该页面而返回对应的值。
:<code><nowiki>{{#ifexist: 页面名 | 存在时返回 | 不存在时返回 }}</nowiki></code>
=== #rel2abs ===
此函数将相对文件路径转换为绝对文件路径。
:<code><nowiki>{{#rel2abs: 相对路径 | 基路径 }}</nowiki></code>
“相对路径”可以使用以下类型的句法:
*<code>.</code> → 本级路径
*<code>..</code> → 回到上一级
*<code>/foo</code> → 向下一级进入子目录/foo
“基路径”默认为函数所在页面的绝对路径。
例如,若指定基路径为<code>用户:用户名/sandbox/模板:测试</code>:
:<code><nowiki>./style.css</nowiki></code> → '''{{#rel2abs: ./style.css | 用户:用户名/sandbox/模板:测试 }}'''
:<code><nowiki>../style.css</nowiki></code> → '''{{#rel2abs: ../style.css | 用户:用户名/sandbox/模板:测试 }}'''
=== #time ===
此解析器函数需要日期和/或时间,并根据给定的语法设置其格式。可以指定日期/时间对象;默认值是魔法词的值,即页面最后呈现到 HTML 的时间。
:<code><nowiki>{{#time:</nowiki> ''format string'' <nowiki>}}</nowiki></code>
:<code><nowiki>{{#time:</nowiki> ''format string'' <nowiki>|</nowiki> ''date/time object'' <nowiki>}}</nowiki></code>
:<code><nowiki>{{#time:</nowiki> ''format string'' <nowiki>|</nowiki> ''date/time object'' <nowiki>|</nowiki> ''language code'' <nowiki>}}</nowiki></code>
:<code><nowiki>{{#time:</nowiki> ''format string'' <nowiki>|</nowiki> ''date/time object'' <nowiki>|</nowiki> ''language code'' <nowiki>|</nowiki> ''local'' <nowiki>}}</nowiki></code>
{| class="wikitable plainlinks" style="text-align: center;font-size: 90%; line-height: normal; margin: 1em; width: 40%;"
|-
! 代码 !! 描述 !! 当前输出
|-
! colspan="3"| 年
|-
| <code>Y</code> || 4位数年。 || {{#time:Y}}
|-
| <code>y</code> || 2位数年。 || {{#time:y}}
|-
| <code>L</code> || 如果是闰年则为1,否则为0。 || {{#time:L}}
|-
! colspan="3"| 月
|-
| <code>n</code> || 月指数,非零填充。 || {{#time:n}}
|-
| <code>m</code> || 月指数,零填充。 || {{#time:m}}
|-
| <code>M</code> || 月名的缩写,使用网站语言。 || {{#time:M}}
|-
| <code>F</code> || 使用网站语言的完整月名。 || {{#time:F}}
|-
! colspan="3"| 一年或一个月内的第几天
|-
| <code>j</code> || 月内的第几天,没有前缀零。 || {{#time:j}}
|-
| <code>d</code> || 月内的第几天,用前缀零填满两位。 || {{#time:d}}
|-
| <code>z</code> || 年内的第几天(一月一日视为第0天)。要获得ISO日期值请在此数基础上加1。 || {{#time:z}}
|-
! colspan="3"| 周,以及周内的第几天
|-
| <code>W</code> || ISO 8601周数,有前缀零。 || {{#time:W}}
|-
| <code>N</code> || ISO 8601 一周中的某天(星期一为1, 星期日为7)。 || {{#time:N}}
|-
| <code>w</code> || 一周内的某天(星期日为0,星期六为6)。 || {{#time:w}}
|-
| <code>D</code> || 星期几的简写。很少国际化。 || {{#time:D}}
|-
| <code>l</code> || 星期几的全称。很少国际化。 || {{#time:l}}
|-
! colspan="3"| 小时
|-
| <code>a</code> || 上午(00:00:00 → 11:59:59)返回“am”, 下午(12:00:00 → 23:59:59)返回“pm”。 || {{#time:a}}
|-
| <code>A</code> || <span class="mw-translate-fuzzy">上面的<code>a</code>项的大写版本。</span> || {{#time:A}}
|-
| <code>g</code> || 十二小时制的小时数(无前缀零)。 || {{#time:g}}
|-
| <code>h</code> || 十二小时制的小时(有前缀零)。 || {{#time:h}}
|-
| <code>G</code> || 二十四小时制的小时(无前缀零)。 || {{#time:G}}
|-
| <code>H</code> || 二十四小时制的小时(有前缀零)。 || {{#time:H}}
|-
! colspan="3"| 分钟和秒钟
|-
| <code>i</code> || 一小时内已过去的分钟数(有前缀零)。 || {{#time:i}}
|-
| <code>s</code> || 一分钟内已过去的秒数(有前缀零)。 || {{#time:s}}
|-
| <code>U</code> || Unix时间。 自1970年1月1日00:00:00 GMT的秒数。 || {{#time:U}}
|-
! id="TimeZone" colspan="3"| 时区
|-
| <code>e</code> || 时区标识符。 || {{#time:e}}
|-
| <code>I</code> || 是否使用夏令时。 || {{#time:I}}
|-
| <code>O</code> || 与格林尼治时间(GMT)的差值 || {{#time:O}}
|-
| <code>P</code> || 与格林威治时间(GMT)的差异,带冒号 || {{#time:P}}
|-
| <code>T</code> || 时区缩写。 || {{#time:T}}
|-
| <code>Z</code> || 时区偏移(秒)。 || {{#time:Z}}
|-
! colspan="3"| 杂项
|-
| <code>t</code> || 本月日数。 || {{#time:t}}
|-
| <code>c</code> || ISO 8601格式化日期,与<code>Y-m-d"T"H:i:s+00:00</code>等效。 || style="font-size: 75%;" | {{#time:c}}
|-
| <code>r</code> || RFC 5332格式化的日期。与<code>D, j M Y H:i:s +0000</code>等价,但週名和月名可能不是国际化表述。 || style="font-size: 75%;" | {{#time:r}}
|}
=== #timel ===
此函数等效于<code>#time</code>函数将<code>local</code>参数设置为<code>true</code>,因此它始终使用 wiki 的本地时间。
=== #titleparts ===
此函数根据斜杠将页面标题分隔为段,然后返回其中一些段作为输出。
:<code><nowiki>{{#titleparts: 页面路径 | 要返回的段数 | 第一个返回段 }}</nowiki></code>
<!-- 机械都市 -->
<!-- Rotaeno -->
<!-- 2200 -->
186

个编辑