2010-08-12 73 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