打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
登录后可编辑和发表评论。

这是Module:Flatten的文档页面

此模块用于把多行wikitext压缩至一行。

用途

此模块最初是为了{{Hid}}编写的。由于MediaWiki的wikitext解析器存在问题,导致把多行wikitext放在列表(*#)缩进(:;)上时会出现错误的结果。

一个著名的例子就是{{Hide}}不能与列表和缩进联用(参见Special:滥用过滤器/30):

* {{Hide}}
* 文本
文本
    • 文本

    文本

    由于{{Hide}}展开后是多行wikitext,与列表或缩进连用会导致后续内容全部缩进。而此模块能够预先把多行wikitext压缩至一行,从而避免该问题。

    * {{#invoke:Flatten|main| {{Hide}} }}
    * 文本
    文本
    
    • 文本

    文本

    此模块同样适用于面临相同困扰的其他模板,例如{{VersionHistory}}、{{Clade}}等。

    技术细节

    参见:敌我同源

    此模块用Lua部分重写了MediaWiki内置的wikitext解析器,能够事先将表格、列表以及段落解析为HTML,再将它们压缩至一行。

    然而,此模块尚未经过相对充分的测试,其解析结果可能会与预期存在一定的差别。

    MediaWiki原生的解析器标签(如<ref>)和各种扩展带来的扩展标签(如<poem>)在传入模块时会被替换为条状标记,这使得模块无法得知标签内部有什么内容。因此,此模块无法将这些标签压缩为一行。但这包括<nowiki>,因为Scribunto唯独提供了展开此条状标记的方法。[1]

    不过,由于<poem>使用较频繁且原理简单,此模块实现了<poem>的部分效果,可以利用[poem]标签来替代:

    {{#tag:pre|{{#invoke:Flatten|main|1=
    [poem style="color:red;"]
    第一行文本
    第二行文本
    [/poem]
    }}}}
    
    <div class="poem" style="color:red;">第一行文本<br/>第二行文本</div>

    目前,本模块检测<categorytree><choose><dynamicpagelist><gallery><poem><poll>这六个标签,若存在相关的条状标记则会报错。

    注释

    1. 实际上,低版本的Scribunto可以展开任何条状标记,但高版本移除了这一功能。