2010-08-12 17 views
6

Son zamanlarda sıkıştığım daha ilginç “programlama dilleri” arasında MediaWiki şablonları var. Size verdikleri sınırlı sözdizimi ile şaşırtıcı miktarda şey yapabilirsiniz, ancak kısa süre önce beni şaşırtan bir sorunla karşılaştım: şablon argümanlarında dize işlevlerini kullanarak. Ne (biraz basitleştirilmiş) yapmak istiyorum geçerli:MediaWiki şablonunda dize işlevleri?

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

sonra gömülü javascript ile yapabilirsiniz Şu anda

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

gibi büyü çeşit yapabileceği bir şablonu yazmak, regexp eşlemesi yakalama ve document.write, ama a) çok büyük, b) hacky, ve c) javascript'i kapatacaksa korkunç bir şekilde kırılacak. ("Bölünmüş" sadece bir örnek olduğunu unutmayın; bitiştirmek, yakalama-regexp'in eşleştirme, vb daha iyi olurdu)

Ben sağ çözüm arayan ayrı argümanlarla şablonu çağırmak sahip olmaktır farkındayım ama Benim özel durumumda zor olan çeşitli nedenlerden dolayı. Eğer bu mümkün değilse, sanırım cevap budur, ancak ise, şablonların arka uçta dizgi manipülasyonu yapmasının bir yolu harika olur.

+0

Cevaplardan birini kabul etmek ve bazı oylama yapmak ister misiniz? – Wikis

+0

Hem iyi cevaplar, ama ben regexp desteği için özel olarak aldım çünkü özellikle regexp desteği aldım – Coderer

cevap

6

Bağlantılı olmak çok kolaydır. Mark'ın yanıta eklemek için, x = y concat z

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

atamak Ve için, ayrıca RegexParserFunctions

Ceterum censeo vardır: MediaWiki hacky değil olmayacak.

+0

# uzantısı için ihtiyacım var mı? MediaWiki kurulumumda çalışmıyor gibi görünüyor. –

+0

Ne http://en.wikipedia.org adresinde. –

+1

Üzgünüz, bu bir yazım hatasıydı. Şablon #vardefine denir. – relet