我最近發現 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许可协议下提供。