Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数/or

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

or是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

or

返回两个参数中首个非空值。出自扩展 ParserPower

2020年5月10日后的版本中,支持任意多个参数(目前BWiki部署的版本仅支持两个参数)

语法

{{#or: 参数1 | 参数2}}

示例

  • {{#or: a | b }}a
  • {{#or: | b }}b
  • {{#or: {{{1|}}}| {{{2|默认值}}} }}默认值 (等价于{{{1|{{{2|默认}}}}}}
  • {{#vardefine:a}}{{#vardefine:b|2333}}{{#or: {{#var:a}} | {{#var:b}} }}2333

底层代码

来自MediaWiki及其扩展的源代码,运行在服务端。此处仅供快速查阅,便于更充分的挖掘其“特性”。

/** https://gitlab.com/hydrawiki/extensions/ParserPower/-/blob/7465e40fb7185204253efea94eddf56326ef422b/includes/ParserPowerSimple.php#L286
 * This function performs the test for the or function.
 *
 * @param Parser  $parser The parser object.
 * @param PPFrame $frame  The parser frame object.
 * @param array   $params The parameters and values together, not yet expanded or trimmed.
 *
 * @return array The function output along with relevant parser options.
 */
public static function orRender($parser, $frame, $params) {
	$inValue1 = isset($params[0]) ? trim($frame->expand($params[0])) : '';
	$inValue2 = isset($params[1]) ? $params[1] : '';

	if ($inValue1 !== '') {
		return [ParserPower::unescape($inValue1), 'noparse' => false];
	} else {
		return [ParserPower::unescape(trim($frame->expand($inValue2))), 'noparse' => false];
	}
}
代码逻辑:
  • 如果参数1展开后非空,返回参数1
  • 否则返回参数2

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考