2010-08-12 74 views
6

最近我一直使用的一種比較有趣的「編程語言」是MediaWiki模板。你可以用他們給你的有限語法做出令人驚訝的數量的東西,但是最近我遇到了一個困擾我的問題:在模板參數上使用字符串函數。我想要做的(有些簡化)是:MediaWiki模板中的字符串函數?

{{myTemp|a=1,2,3,4}} 

然後寫一個模板,可以做某種魔力一樣

You told me _a_ starts with {{#split:{{{a}}}, ",", 0}} 

目前,我可以嵌入的JavaScript做到這一點,捕獲正則表達式匹配和document.write,但a)它是巨大的,b)它是hacky,並且c)如果有人關閉javascript,它將會崩潰。 (請注意,「分裂」僅僅是一個例子,連接,捕獲 - 正則表達式匹配等,甚至會更好)

我意識到正確解決方案是讓調用者調用具有單獨參數的模板,但因爲各種原因,在我的情況下很難。如果根本不可能,我想這就是答案,但如果有某種方式讓模板在後端執行字符串操作,那就太棒了。

+0

你想接受其中一個答案並做一些投票嗎? – Wikis 2010-08-16 20:51:50

+0

這兩個好的答案,但我選擇relet具體,因爲我一直在尋找正則表達式支持 – Coderer 2010-09-07 23:34:31

回答

6

連結很簡單。要分配x = y concat z

{{#vardefine:x|{{{y}}}{{{z}}}}} 

而且,添加到馬克的回答,也有RegexParserFunctions

Ceterum censeo:鏈接到MediaWiki永遠不哈克。

+0

我需要#vardef哪個擴展?似乎不適用於我的MediaWiki安裝。 – 2012-03-15 03:02:05

+0

無論在http://en.wikipedia.org上。 – 2012-03-15 03:09:52

+1

對不起,這是一個錯字。該模板被稱爲#vardefine。 – relet 2012-03-15 10:17:00