切換選單
切換偏好設定選單
切換個人選單
尚未登入
登入後可編輯和留言。

此頁面為 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可以展開任何條狀標記,但高版本移除了這一功能。