2010-08-12 16 views
6

अधिक दिलचस्प "प्रोग्रामिंग भाषाओं" में से एक मैं हाल ही में मीडियाविकि टेम्पलेट्स के साथ फंस गया हूं। आप सीमित सिंटैक्स के साथ एक आश्चर्यजनक मात्रा में सामान कर सकते हैं, लेकिन हाल ही में मैंने एक समस्या में भाग लिया है जो मुझे रोकता है: टेम्पलेट तर्कों पर स्ट्रिंग फ़ंक्शंस का उपयोग करना। क्या मैं (कुछ सरलीकृत) क्या करना चाहते हैं यह है:मीडियाविकि टेम्पलेट में स्ट्रिंग फ़ंक्शन?

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

तो, उस तरह

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

वर्तमान में जादू के कुछ प्रकार कर सकते हैं एक टेम्पलेट लिखने मैं एम्बेडेड जावास्क्रिप्ट के साथ ऐसा कर सकते हैं, regexp मिलान को कैप्चर करना, और document.write, लेकिन ए) यह बहुत बड़ा है, बी) यह हैकी है, और सी) अगर कोई जावास्क्रिप्ट बंद कर देता है तो यह बहुत ही टूट जाएगा। (ध्यान दें कि "विभाजन" केवल एक उदाहरण है; श्रेणीबद्ध, पर कब्जा-regexp मिलान, आदि, और भी बेहतर होगा)

मुझे पता सही समाधान फोन करने वाले अलग तर्क के साथ टेम्पलेट आह्वान करने के लिए है, लेकिन विभिन्न कारणों से जो मेरे विशेष मामले में कठिन होगा। यदि यह संभव नहीं है, तो मुझे लगता है कि यह जवाब है, लेकिन अगर टेम्पलेट्स को पीछे की ओर स्ट्रिंग-मैनिपुलेशन करने का कोई तरीका है, तो यह बहुत अच्छा होगा।

+0

क्या आप उत्तर में से किसी एक को स्वीकार करना चाहते हैं और कुछ अप-वोटिंग करना चाहते हैं? – Wikis

+0

दोनों अच्छे जवाब, लेकिन मैंने विशेष रूप से रीलेट चुना क्योंकि मैं regexp समर्थन – Coderer

उत्तर

6

Concatenate आसान है। मार्क के जवाब में जोड़ने के लिए x = y concat z

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

आवंटित और, करने के लिए, वहाँ भी RegexParserFunctions

Ceterum censeo हैं: मीडियाविकि hacky नहीं कभी नहीं होगा।

+0

की तलाश कर रहा था, मुझे #vardef के लिए कौन सा एक्सटेंशन चाहिए? मेरी मीडियाविकि स्थापना पर काम नहीं कर रहा है। –

+0

न तो http://en.wikipedia.org पर। –

+1

क्षमा करें, वह एक टाइपो था। टेम्पलेट को # वार्डफिन कहा जाता है। – relet

संबंधित मुद्दे