listmerge是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
listmerge
【疑存BUG】以指定规则合并列表元素。出自扩展 ParserPower。
列表中的所有元素将依次两两匹配,符合规则的元素将按照指定格式合并。
语法
{{#listmerge:
|list=
|insep=
|outsep=
|token1=
|token2=
|tokensep=
|fieldsep=
|matchpattern=
|mergepattern=
|matchtemplate=
|mergetemplate=
|sortmode=
|sortoptions=
|counttoken=
|intro=
|outro=
|default=
}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- insep: 可选,输入分隔符,默认逗号
,
。用于分割参数list
,构建列表
输出格式控制,可选:
- outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
- intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
- counttoken: 占位符,用于在intro, outro参数中填充列表项数量
- default: 过滤后列表如果为空时的输出。
合并规则参数:
- token1, token2, matchpattern 和 mergepattern: token1/2是列表项占位符,用在后两个pattern中,如果matchpattern的解析结果是yes,这两个列表项将被mergepattern替代
- tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做格式控制
- matchtemplate, mergetemplate: 使用模板来作为匹配和合并逻辑,列表项最为参数1和2传入。当matchtemplate的解析结果是yes时,使用mergetemplate合并元素
- fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板
排序参数,可选:
- sortmode: 排序时机。值为以下选项之一:
- nosort 不排序
- presort 先排序,再处理列表项。
- sort 或 postsort 先按处理列表项,后排序
- pre/postsort 先排序,再处理列表项,再次排序
- sortoptions: 排序方式,值为以下的一个或多个选项:
- alpha 或 numeric: 按字母或数字排序,默认字母
- asc 或 desc: 升序和降序排序
- ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
- duplicates: 重复值处理,值为以下选项之一:
- keep 保留重复值
- prestrip 在处理前移除重复值
- strip 或 poststrip 在处理后移除重复值。注意,此时wikitext尚未被解析,因此即使指定此选项,获得的结果仍然可能有重复项。
- pre/poststrip 在处理前、后均移除一次重复值(目前由于扩展本身的bug,此选项仅能在格式化前执行一次)
示例
- 疑似bug,暂无
{{#listmerge:list=Apple,Orange,Banana|token1=a|token2=b|matchpattern=yes|mergepattern=a+b}}
→ +
(应为Apple+Orange+Banana
)
底层代码
请参阅: https://gitlab.com/hydrawiki/extensions/ParserPower/-/blob/master/includes/ParserPowerLists.php?ref_type=heads#L2504
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
MediaWiki:WikiparserHighlight
MediaWiki:WikiparserHighlight.css