TL;DR

前情提要

我最近發現 Mediawiki 有個很有趣的 namespace,叫做模塊(Module)。在這裡面的都是一堆程式碼。我看了下,好像能用 Lua 完成某些事情、還有產生某些 wikitext。如果你有興趣的話,自己去我的筆記看看吧。

目標

最終要產生這段文字:

<gallery>
1卷.png|集英社
1卷 台灣大然版.jpg|大然
1卷 台灣東立版.jpg|東立
1卷 香港天下版.jpg|天下
1卷 浙美版.jpg|浙美
</gallery>

編譯乎?渲染乎?

我在Sandbox wiki掙扎了好久好久,都搞不清楚怎麼做。直到我用 nowiki 語法檢查模塊時,才發現語法就是我想要的,只不過,Mediawiki 似乎沒有把這段程式渲染為 wikitext。

那怎麼渲染呢?答案是要用 frame.preprocess。這是 Scribunto 提供的一段函式,它能把輸入文字以 wikitext 啟動。你可以參照官網的說明

跑了一下,果然動了!耶!

動態一時爽,重構火葬場

事情是這樣的,我要讓大然在27卷以後都不顯示。不過在寫的時候,又爆出問題:

Lua: attempt to perform arithmetic on a string value

我一看就知道是型別出問題:Lua 是動態語言:你可以把文字任意變成數字、反過來也行。但是動態型別的語言下,文字與數字之間的轉換不一定如你的想像。

只是如何解決?我試著轉換型別,偏偏快取又清理得太慢,看不出效果,只好暫時取消了。

不過其實動態型別的語言也不錯啦……但不管怎麼,我還是完成了


最後,我終於把型別問題轉換好了:tonumber 很好用。

AWB

最後我用 AWB 來清掉以前的 gallery。也是麻煩,但我用這三行 regex 清掉大部分的圖片:

  • \|image = <gallery>
  • [\d卷].*(?=\n)
  • <\/gallery>

只是留下了很多空白 ^^||

結束

大概是這樣。總之,終於把單行本圖片這玩意完成了。也順便學會怎麼寫 Lua 惹。

社区内容除另有注明外,均在CC-BY-SA许可协议下提供。