Строковые функции в шаблоне MediaWiki? - PullRequest
6 голосов
/ 12 августа 2010

Один из наиболее интересных "языков программирования", с которыми я в последнее время застрял, - это шаблоны MediaWiki.Вы можете сделать удивительное количество вещей с ограниченным синтаксисом, который они вам дают, но недавно я столкнулся с проблемой, которая ставит меня в тупик: использование строковых функций в аргументах шаблона.То, что я хотел бы сделать (несколько упрощенно):

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

, а затем написать шаблон, который может творить какую-то магию, такую ​​как

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

В настоящее время я могу сделать этосо встроенным javascript, захватом соответствия регулярному выражению и document.write, но a) он огромен, b) он взломан и c) он ужасно сломается, если кто-нибудь отключит javascript.(Обратите внимание, что «split» является просто примером; конкатенация, сопоставление с захватом-регулярным выражением и т. Д. Было бы даже лучше)

Я понимаю, что правильное решение состоит в том, чтобы вызывающая сторона вызывалаШаблон с отдельными аргументами, но по разным причинам, что будет сложно в моем конкретном случае.Если это просто невозможно, я думаю, что это ответ, но если есть какой-то способ заставить шаблоны выполнять строковые манипуляции на серверной части, это было бы здорово.

Ответы [ 2 ]

6 голосов
/ 12 августа 2010

Объединить легко. Назначить x = y concat z

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

И, чтобы добавить к ответу Марка, есть также RegexParserFunctions

Ceterum censeo: MediaWiki никогда не будет хакерской.

2 голосов
/ 12 августа 2010

Вы можете сделать это с помощью расширений, например, StringFunctions .Но смотрите также ParserFunctions и ParserFunctions / Extended .(Вы можете найти гораздо больше примеров в Категория: Расширения функций парсера .)

Отличный обзор Справка: Расширение: ParserFunctions .

...