وڪيپيڊيا:Advanced template coding
هي مدد وارو صفحو هڪ رهنمائي وارو صفحو آهي۔ هي انهن خيالن يا عملن جي وضاحت ڪري ٿو جيڪي وڪيپيڊيا برادري استعمال ڪري ٿي۔ هي وڪيپيڊيا جي پاليسين يا رهنمائي اصولن مان نه آهي، ۽ ان ۾ اتفاق راءِ جا مختلف درجا ظاهر ٿي سگهن ٿا۔ |
ڪجهه اعليٰ درجي جي سانچي ڪوڊنگ جون ٽيڪنيڪون موجود آهن جيڪي وڪيپيڊيا ۾ سانچن جي ڏيکاءُ يا ايڊيٽنگ کي بهتر بڻائين ٿيون. ميڊيا وڪي جي مارڪ اپ ٻولي ۾ سانچي پيرا ميٽرن جي خرابي (ڊي بگنگ) لاءِ به ڪجهه حڪمت عمليون موجود آهن. اهڙا سانچا جن کي پيچيده ڪنٽرول اسٽرڪچر يا مشروط اظھار گهربل هجن، انهن کي Lua ماڊيولز ۾ لکڻ يا تبديل ڪرڻ وڌيڪ مناسب آهي، ڇو ته wikitext ان مقصد لاءِ بهتر نموني ٺهيل ناهي.
گهڻيون خرابيون مارڪ اپ ٻولي جي ڪجهه پيچيده خاصيتن سان واسطو رکن ٿيون، جيڪي ڪوڊنگ ۾ غلطيون پيدا ڪن ٿيون. غير متوازن metacharacters وڏي غلطي جو ذريعو آهن. مثال طور، جيڪڏهن {{1}}} لکيو وڃي بدران {{{1}}}، ته اهو اهڙو عمل ڪندو ڄڻ ته {{1}} } هجي، جنهن سان Template:1 ۽ اضافي "}” سڏجي ويندا.
- if اظهار (expression) جي اندر پيرا ميٽرن جي مواد جي wiki-formatting ٻاهر جي ڀيٽ ۾ مختلف ٿي سگهي ٿي. اهي سانچا جيڪي substitute ٿيڻا هجن، انهن کي خاص سنڀال جي ضرورت هوندي آهي. پيرا ميٽرن لاءِ ڊفالٽ قدر (defaults) يا متبادل نالا (aliases) مهيا ڪرڻ به هن بحث جو حصو آهي.
40 تائين نيسٽنگ سطحن جي حد
[سنواريو]هڪ ئي سانچي (Template) اندر نيسٽنگ جي حد 40 آهي، يعني وڌ ۾ وڌ 40 ڀيرا هڪ ٻئي جي اندر اظهار (expressions) جهڙوڪ 40 ڀيرا گهڻ سطحي “if-then-else-if...” استعمال ڪري سگهجن ٿا. 41هين ڀيري نيسٽ ٿيل “if” تي غلطي جو پيغام ظاهر ٿي سگهي ٿو: "Exceeded nesting limit". البت جيڪڏهن 40 سطحن کان وڌيڪ نيسٽنگ نه هجي ته هڪ سانچي ۾ سوين if-اظهار يا switch-شاخون ٿي سگهن ٿيون، شرط اهو ته سڀ هڪ وڏي زنجير جي صورت ۾ نيسٽ نه ٿيل هجن.
ڪي سانچا سالن تائين 23 سطحن کان وڌيڪ گهرا شرطي حساب ڪتاب هلائيندا رهيا آهن. اهڙيءَ طرح ڪي سانچا سوين if-اظهار رکن ٿا، پر اهي سڀ هڪ ئي وڏي if-then-else-else-else... زنجير طور ناهن.
ميڊياوڪي پاران #جيڪڏھن اندر ڪلازن جي وڪي-فارميٽنگ
[سنواريو]سانچي جي پيرا ميٽرن جي پروسيسنگ ۾ هڪ پيچيده مسئلو اهو آهي ته جڏهن پيرا ميٽر if-منطق (جهڙوڪ [[m:Help:Magic words|]]، [[m:Help:Magic words|]])، [[m:Help:Magic words|]]، يا [[m:Help:Magic words#Formatting|]]، [[m:Help:Magic words#Formatting|]]، [[m:Help:Magic words#Formatting|]]، [[m:Help:Magic words#Formatting|]] اندر هجن، يا ڪنهن ٻئي سانچي جي پيرا ميٽر اندر هجن، تڏهن انهن جو مواد وڪي-فارميٽ ٿي وڃي ٿو. بمطابق
مئي 2012[تازه ڪاري]
تائين ميڊياوڪي مارڪ اپ پارسر پيرا ميٽرن جي مواد کي #if-اظهارن ۽ سانچي جي پيرا ميٽرن اندر وڪي-فارميٽ ڪندو رهيو آهي (پر ٻاهر نه).
ان جو مطلب اهو آهي ته جيڪڏهن پيرا ميٽر ۾ خالي جاءِ، شروع ۾ سيميڪولن (;)، ڪولن (:)، يا پائونڊ نشان (#) هجي ته if-ڪلاز اندر ان جي قيمت بدلجي سگهي ٿي. مثال طور {{{4}}} ٻاهر هڪڙي نموني ڏيکاري سگهي ٿو، پر اندر {{#ifeq:{{{1}}}=0|{{{4}}} ...}} ٻي صورت ۾.
سڀ کان وڌيڪ حيران ڪندڙ صورت تڏهن ٿئي ٿي جڏهن پيرا ميٽر 4 سيميڪولن سان شروع ٿئي، جيڪو پراڻي طرز جي بولڊ “سيميڪولن-هيڊر لائن” ٺاهي ڇڏي ٿو.
TEST 1: {{#if:{{{4|}}}|{{{4|;}}} <== yes, semicolon|no, 4=empty}}TEST 2: {{#if:{{{4|;}}}|{{{4|;}}} <== yes, semicolon|no, 4=empty}}
|
TEST 3: a{{P1|;}}b
|
اهو مسئلو #if، #ifexpr، #ifeq، #switch يا سانچي جي پيرا ميٽر اندر ٿيندو آهي. جيڪڏهن پيرا ميٽر کان اڳ ڪجهه متن لکيل هجي ته پوءِ وڪي-فارميٽنگ لاڳو نٿي ٿئي.
TEST 4: {{#ifexpr:{{{1|7}}}=7|<b></b>{{{4|;}}} equals 7|not 7}}TEST 5: {{#ifexpr:{{{1|7}}} < 9|{{{4|#}}} LESS THAN 9|not<9}}TEST 6: {{#ifexpr:{{{1|7}}} < 9| {{{4|#}}} LESS THAN 9|not<9}}TEST 7: "{{#ifexpr:{{{1|7}}} < 9| {{{4|#}}} LESS THAN 9|not<9}}"
|
TEST 7 ۾ شروع ۾ “#” سبب خودڪار نمبرنگ ٿي وئي. سيميڪولن، ڪولن يا “#” سان شروع ٿيندڙ حالتون گهٽ ٿين ٿيون، پر ياد رکڻ گهرجي ته if-منطق اندر پيرا ميٽر ڏيکارڻ وقت نتيجا بدلجي سگهن ٿا. جيڪڏهن فارميٽنگ نه گهرجي ته #، : ۽ ; استعمال ڪريو.
Debugging (غلطيون ڳولڻ)
[سنواريو]گهڻيون ڪوڊنگ غلطيون ان حصي کي الڳ ڪري سڃاڻپ ڪري سگهجن ٿيون جتي مسئلو هجي. منطق جي وهڪري کي غور سان پڙهڻ اڪثر تيز ترين حل هوندو آهي. ممڪن حڪمت عمليون:
- "{{" ۽ "}}" جو ميل چيڪ ڪريو.
- ڪوڊ جو حصو الڳ ٽيسٽ صفحي تي نقل ڪري جانچيو.
- ساڳيو حصو سانچي جي مٿي عارضي طور رکي جانچيو.
- سانچي کي جدا جدا حصن ۾ ورهايو.
ڪجهه پراڻيون چوڻيون ياد رکو:
- جيڪڏهن آزمائش نه ڪئي وئي آهي ته اهو ڪم نٿو ڪري.
- توهان اُهو ئي اميد رکو جيڪو توهان جاچيو. (ڊبليو ايڊورڊز ڊيمنگ)
پيچيده سانچن لاءِ "/testcases" ذيلي صفحو مفيد هوندو آهي. ڪي حالتن ۾ {{Debug}} سانچو به مددگار آهي.
اظهار ۽ if-منطق ۾ ڊيفالٽ پيرا ميٽر
[سنواريو]پيرا ميٽر استعمال ڪندي هميشه ڊيفالٽ قيمت مقرر ڪريو:
{{#expr: 109.75 / {{{1|1}}} }}{{#ifeq: {{{answer|y}}}|y|show yes}}
ڊيفالٽ کان سواءِ پيرا ميٽر edit-preview دوران literal ٽرپل-بريس صورت ۾ رهندو (مثال: {{{x}}}) ۽ اظهار ۾ evaluate نه ٿيندو.
عام ڪوڊنگ غلطيون
[سنواريو]- بند ڪندڙ بريس گهٽ هئڻ:
{{{1}} - کليل نه ٿيل HTML ڪمينٽ:
<--بدران<!-- - بند نه ٿيل ڪمينٽ:
-->وسارڻ - #ifexpr ۾ ":" يا "#" وسارڻ:
اڪثر مسئلا سادو نحو (syntax) جي هڪ منٽ جي درستگي سان حل ٿي وڃن ٿا.
سانچي کي substitution جي قابل بڻائڻ
[سنواريو]ڪڏهن ڪڏهن سانچي کي اهڙي طرح لکڻو پوي ٿو جو {{subst:}} ذريعي محفوظ ٿي وڃي. ان لاءِ هر مارڪ اپ فنڪشن اندر safesubst:<noinclude/> شامل ڪرڻ لازمي آهي.
مثال:
Total articles was: {{ subst:NUMBEROFARTICLES}}{{ safesubst:<noinclude/>#ifeq:{{{1|AX}}}|AX|yes}}
جيڪڏهن safesubst نه هوندو ته subst-موڊ ۾ سانچو ناڪام ٿي سگهي ٿو.
تمام وڏن سانچن جا مثال
[سنواريو]ڪي وڏا سانچا سالن کان هلندا پيا اچن:
مثال طور Citation/core 621 پيرا ميٽرن کي جانچيندو آهي.
ڪجهه پروگرامنگ آزمايو
[سنواريو]Special:ExpandTemplates صفحو وڪي-ٽيڪسٽ کي وڌائي ڏيکاري ٿو، جنهن ۾ سانچا، parser فنڪشنون ۽ متغير شامل آهن.
پڻ ڏسو
[سنواريو]- وڪيپيڊيا:زمرو لڪائڻ
- وڪيپيڊيا:اعليٰ درجي جو مضمون سنوارڻ
- وڪيپيڊيا:اعليٰ درجي جي حاشيي ترتيب
- وڪيپيڊيا:اعليٰ درجي جي جدول ترتيب
- وڪيپيڊيا:اعليٰ درجي جي متن ترتيب
- وڪيپيڊيا:انفوبڪس کان ٻاهر سوچڻ
- وڪيپيڊيا:خبرداري
- مدد:نقطه نگاري
- وڪيپيڊيا:وڪي ميڊيا فائونڊيشن غلطي
- وڪيپيڊيا:جرمن وڪيپيڊيا جو ترجمو ڪرڻ بابت
- وڪيپيڊيا:لُوا
- {{if}} ۽ {{Ifnotempty}}
- سانچو:Mfl
- سانچو:وِرَپَر سانچو
- m:مدد:حساب ڪتاب
نوٽس
[سنواريو]-->