{{ safesubst:p{{ safesubst:#if{{{1}}}:{{{2}}}|1|2}}|{{{3}}}|}}

Dokumentacija šablona[prikaži] [uredi] [istorija] [osveži]

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
    }}

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|
    }}

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

uredi

Poš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}}.

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}}.

Vidi još

uredi