• Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

模組:Flatten/doc

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋

此頁面為 Module:Flatten 的說明文件

此模塊用於把多行wikitext壓縮至一行。

用途

此模塊最初是為了{{Hid}}編寫的。由於MediaWiki的wikitext解析器存在問題,導致把多行wikitext放在列表(*#)縮進(:;)上時會出現錯誤的結果。

一個著名的例子就是{{Hide}}不能與列表和縮進聯用(參見Special:濫用過濾器/30):

SVG 示例
    • 文本

    文本

* {{Hide}}
* 文本
文本

由於{{Hide}}展開後是多行wikitext,與列表或縮進連用會導致後續內容全部縮進。而此模塊能夠預先把多行wikitext壓縮至一行,從而避免該問題。

SVG 示例
  • 文本

文本

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

此模塊同樣適用於面臨相同困擾的其他模板,例如{{VersionHistory}}、{{Clade}}等。

技術細節

參見:敵我同源

此模塊用Lua部分重寫了MediaWiki內置的wikitext解析器,能夠事先將表格、列表以及段落解析為HTML,再將它們壓縮至一行。

然而,此模塊尚未經過相對充分的測試,其解析結果可能會與預期存在一定的差別。

關於解析器擴展標籤

MediaWiki原生的解析器標籤(如<ref>)和各種擴展帶來的擴展標籤(如<poem>)在傳入模塊時會被替換為條狀標記,這使得模塊無法得知標籤內部有什麼內容。因此,此模塊無法將這些標籤壓縮為一行。但這包括<nowiki>,因為Scribunto唯獨提供了展開此條狀標記的方法。[1]

不過,由於<poem>使用較頻繁且原理簡單,此模塊實現了<poem>的部分效果,可以利用[poem]標籤來替代:

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

目前,本模塊檢測<categorytree><choose><dynamicpagelist><gallery><poem><poll>這六個標籤,若存在相關的條狀標記則會報錯。

注釋

  1. 實際上,低版本的Scribunto可以展開任何條狀標記,但高版本移除了這一功能。