帮助:解析函数/iferror
iferror是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
iferror
条件分支函数,基于错误检测。出自扩展 ParserFunctions。
检测输入wikitext解析结果中是否存在错误标记(由class="error"的HTML元素表示),并根据检测结果返回不同值。
语法
{{#iferror: 测试wikitext | 错误时返回值 | 正确时返回值 }}
- 测试wikitext:需要检测的wikitext,如#expr表达式
- 错误时返回值(可选):当检测到错误时返回的内容。如果留空且检测到错误,将返回空字符串
- 正确时返回值(可选):当未检测到错误时返回的内容。如果留空且未检测到错误,将返回测试字符串本身
错误检测基于HTML元素中是否包含class="error"属性,仅限strong/span/p/div标签。这类错误可能来自expr、time、rel2abs产生,模板(Templates)错误,如循环、递归和其他解析器错误也能产生。
示例
- 基本用法
{{#iferror: {{#expr: 1 + 2 }} | error | correct }}
→ correct - 检测错误
{{#iferror: {{#expr: 1 + X }} | error | correct }}
→ error - 省略正确返回值
{{#iferror: {{#expr: 10/2 }} | error }}
→ 5 - 同时省略返回值
{{#iferror: <span class="error">Err</span> }}
→ - 显式错误元素
{{#iferror: <div class="warning error">警示</div> | 发生错误 }}
→ 发生错误
底层代码
- 代码逻辑:
- 通过正则表达式匹配包含class="error"的HTML元素(支持strong/span/p/div标签)
- 当测试字符串包含错误标记时,返回第二个参数的内容
- 当测试字符串不含错误时:
- 如果提供了第三个参数,返回第三个参数
- 如果未提供第三个参数,直接返回原始测试字符串
- 当错误返回值参数被省略时(即未提供第二个参数),错误情况下返回空字符串
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。