2010-08-12 21 views
6

Uno dei più interessanti "linguaggi di programmazione" con cui sono stato bloccato ultimamente sono i modelli MediaWiki. Puoi fare una quantità sorprendente di cose con la sintassi limitata che ti danno, ma recentemente mi sono imbattuto in un problema che mi ha bloccato: usando le funzioni di stringa sugli argomenti del template. Quello che mi piacerebbe fare (un po 'semplificata) è:Funzioni stringa nel modello MediaWiki?

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

quindi scrivere un modello che può fare una sorta di magia come

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

Allo stato attuale, posso farlo con JavaScript incorporato, catturare la corrispondenza delle espressioni regolari, e document.write, ma a) è enorme, b) è hacky, e c) si romperà orribilmente se qualcuno disattiva javascript. (Si noti che "split" è solo un esempio, concatenare, corrispondenza cattura-regexp, ecc, sarebbe ancora meglio)

mi rendo conto che la soluzione giusta è quello di avere il chiamante invoca il modello con argomenti separati, ma per vari motivi che sarebbero difficili nel mio caso particolare. Se semplicemente non è possibile, credo che sia la risposta, ma se il numero è un modo per avere i modelli di manipolazione delle stringhe sul back-end, sarebbe fantastico.

+0

vuoi accettare una delle risposte e fare un up-voting? – Wikis

+0

Entrambe le buone risposte, ma ho scelto relet in particolare perché stavo cercando supporto per regexp – Coderer

risposta

6

Concatenarsi è facile. Per assegnare x = y concat z

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

E, per aggiungere alla risposta di Marco, ci sono anche RegexParserFunctions

Ceterum censeo: MediaWiki non sarà mai non hacky.

+0

Quale estensione ho bisogno per #vardef? Non sembra funzionare su My MediaWiki installation. –

+0

Né su http://en.wikipedia.org. –

+1

Mi dispiace, quello era un errore di battitura. Il modello si chiama #vardefine. – relet

Problemi correlati