Šablon:If/dok
![]() | Ovo je dokumentaciona podstranica za Šablon:If. Sadrži informacije o korišćenju, kategorijama i drugom sadržaju koji nije deo originalne stranice. |
Ovim šablonom parser funkcije kolekcije parser funkcija sa imenima koja počinju na „#if” mogu biti korišćene na način da ne „čiste” razmake i nove redove iz „then” i „else” delova. Razmaci i dalje ne utiču na rezultat uslova. Parametar 1 odabire tip kao što je „eq”, „expr”, „exist” ili „error” (za #iferror), ili prazno „||” za obično „if-there” (za #if). Šablon može biti ugnežđivan do 6 ili 7 puta, sa jednim nivoom unutar drugog, zato što se prvo završavaju radnje onih vanjskih nivoa pre then/else unutrašnjih nivoa.
Ovaj šablon se može supstituisati, i to kada se izraz ili poređenje ne menja. Funkcionalno, vodeći karakter razmaka se sprema interno kao jednostavni prazan karakter. Imati na umu da nulti noviki tag („<nowiki/>”) može biti korišćen bez šablona If kako bi se omogućilo korišćenje vodećeg razmaka (kao na primer „<nowiki/> xx”) bilo gde, ali interna memorija sprema 43-znakovnu oznaku za „<nowiki/>” u dužini stringa. Kako god, nema dodatne ekspanzione dubine za noviki tag, kao što je to slučaj sa pratećim razmakom, „zz <nowiki/>”.
Upotreba
uredi- {{if||x| p | q }} daje „ p ” [Primetite par vertikalnih crta oko prvog praznog parametra.]
- {{if|expr|2<3| p | q }} daje „ p ”
- {{if|eq| u |u| p | q }} daje „ p ”
- {{if|exist| Помоћ:Уређивање | p | q }} daje „ p ”
- {{if|error|{{#expr:x}}| p | q }} daje „ p ”
Uporedi („{{if|тип|...
” se menja sa „{{#ifтип:...
”):
- {{#if:x| p | q }} daje „p” [Primetite da razmaci oko p odnosno q ne bivaju ispisani.]
- {{#ifexpr:2<3| p | q }} daje „p”
- {{#ifeq: u |u| p | q }} daje „p”
- {{#ifexist: Помоћ:Уређивање | p | q }} daje „p”
- {{#iferror:{{#expr:x}}| p | q }} daje „p”
Tekst then-klauze ili else-klauze se procesira i proširuje samo kada je aktiviran nečim. Dakle, bilo koji šabloni u upotrebi su aktivirani samo kada se then-klauza ili else-klauza poklapa; u ostalim slučajevima se preskaču kao obične uparene zagrade, „{{” sa „}}”.
Uvlačenje (engl. Indentation): Ukoliko se označavanje (kod) uvlači, mora se voditi računa o tome kako izbeći nove redove (linije) pri uvlačenju „}}” u sledećem redu. Dodatna vertikalna crta „|” se može dodati posle else-klauze da bi se završio tekst i omogućilo postavljanje „}}” bilo gde bez dodavanja dodatnog reda u else-klauzu. Na primer:
- {{if|{{{1|}}}
|rezultat ako je parametar 1 definisan|rezultat ako parametar 1 nije definisan| ← dodatna "|" završava else-klauzu
}}
- {{if|{{{1|}}}
Kada se else-klauza uvlači u sledeći red, novi red (CR/LF) treba biti dodat:
- {{if|{{{1|}}}
|rezultat ako je parametar 1 definisan ← dodatni novi red ide ovde
|rezultat ako parametar 1 nije definisan|
}}
- {{if|{{{1|}}}
Da bi se else-klauza uvukla, može se koristiti i HTML komentar u obliku „<!--” razdvojen u sledeći red kao „-->|rezultat ako parametar 1 nije definisan...”. Osim u slučajevima kada je svaka then-klauza i else-klauza pažljivo testirana da bi se pronašli eventualni neželjeni redovi, rezultat će verovatno biti prelomi, sa dodatnim prelomima za svaki novi red. Zbog ovoga, globalno uređivanje sa jednostavnim search-and-replace-om (zamenjivanjem) „{#if:
”-a u „{if||
” verovatno će rešiti probleme sa prelomima kad god je originalno označavanje wrap-ovano da bi se uvukla else-klauza ili „}}” svake if-struktire. Uvlačenje then-klauze ne predstavlja nikakav problem.
Razmatranja performansi
urediPošto šablon If mora pripremiti parametre za #if, #ifeq, #ifexpr
itd. postoje i neke limitacije ovog šablona. Tempiran je da radi pri brzinama od 290 slučajeva u sekundi, tako da procesiranje 29 slučajeva uzima samo 0,1 s, desetinu sekunde za 29 poređenja. Svaka ugnežđena upotreba ekspanzionoj dubini dodaje 5 nivoa, tako da 7 ugnežđenih if-šablona sadržava 5*7=35 nivoa (limit je 41 nivo).
Korišćenje P-if sintakse: Slična if-struktura može biti kodirana bez šablona If, koristeći {{P1}} i {{P2}} šablone u „P-if” strukturi. Šablon P1 uvek vraća parametar 1, a P2 parametar 2. Dakle, poređenje 4 naprema 3 može biti kodirano koristeći P-if sintaksu u obliku:
- Primer za
#ifexpr
: „{{P{{#ifexpr: 4 > 3|1|2}}| 4 је веће| 4 је мање}}” - Rezultat za
#ifexpr
: „ 4 je veće” ← pozvano poređenje {{P1}}.
- Primer za
Ekspanziona dubina za P-if ima vrednost od samo 4 nivoa, dok ugnežđivanje then-klauze ili else-klauze može biti više zbunjujuće od korišćenja ugnežđenih nivoa šablona If.
- Primer za
#if
: „{{P{{#if:{{{2|x}}}|1|2}}| резултат ако је {2} попуњен| резултат ако је {2} празан}}" - Rezultat za
#if
: „ rezultat ako je {2} prazan” ← pozvano poređenje {{P2}}.
- Primer za
Vidi još
uredi- m:Šablon:If
- Šablon:Ifnotempty — za jednostavnost i smanjivanje limitacija nastalih usled limita ekspanzione dubine, poseban šablon koji se slaže samo sa šablonom #if
- Šablon:Switch — za podrazumevani rezultat