2010-08-12 9 views
6

Uno de los "lenguajes de programación" más interesantes con los que he estado atrapado últimamente es el de las plantillas de MediaWiki. Puedes hacer una cantidad sorprendente de cosas con la sintaxis limitada que te dan, pero recientemente me encontré con un problema que me ahoga: usar funciones de cadena en argumentos de plantilla. Lo que me gustaría hacer (algo simplificada) es:¿Funciones de cadena en la plantilla de MediaWiki?

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

luego escribir una plantilla que puede hacer algún tipo de magia como

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

En la actualidad, no puedo hacer esto con JavaScript, incluidos, capturando la coincidencia de expresiones regulares, y document.write, pero a) es enorme, b) es hacky, yc) se romperá horriblemente si alguien desactiva javascript. (Tenga en cuenta que "dividir" no es más que un ejemplo, concatenar, coincidente captura-expresión regular, etc., sería aún mejor)

realizo la solución correcta es tener la persona que llama invocar la plantilla con argumentos separados, pero por varias razones que serían difíciles en mi caso particular. Si simplemente no es posible, supongo que esa es la respuesta, pero si hay es, una forma de tener plantillas para manipular cadenas en el back-end, sería genial.

+0

¿Desea usted aceptar una de las respuestas y votar por ella? – Wikis

+0

Ambas buenas respuestas, pero seleccioné específicamente Relet porque había estado buscando compatibilidad con expresiones regulares – Coderer

Respuesta

6

Concatenar es fácil. Para asignar x = y concat z

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

Y, para añadir a la respuesta de la marca, también hay RegexParserFunctions

Ceterum censeo: MediaWiki nunca será no hacky.

+0

¿Qué extensión necesito para #vardef? No parece funcionar en la instalación de My MediaWiki. –

+0

Ni en http://en.wikipedia.org. –

+1

Lo siento, eso fue un error tipográfico. La plantilla se llama #vardefine. – relet

Cuestiones relacionadas