Pomoć:Funkcije parsera
Funkcije parsera svojevrsne su magične riječi koje primaju parametre i vraćaju rezultat nakon obrade.
Tip | Operatori |
---|---|
Grupiranje (zagrade) | ( )
|
Brojevi | 1234.5 e (2.718) pi (3.142)
|
Binarni operator e unarni + ,-
| |
Unarni | not ceil trunc floor abs exp ln sin cos tan acos asin atan
|
Binarni | ^
|
* / div mod
| |
+ -
| |
Zaokruživanje | round
|
Booleova algebra | = != <> > < >= <=
|
and
| |
or
|
Parserska funkcija #expr služi za izračunavanje matematičkih ili Booleovih izraza. Funkcija podržava logaritamske i trigonometrijske izračune, znanstvenu notaciju, matematičke funkcije poput floor() ili trunc() i poštuje redoslijed matematičkih operacija.
Sintaksa: {{#expr: matematički izraz }}
{{#expr:floor1.5e1}}
=> 15{{#expr:(not0or1)and0}}
=> 0{{#expr:floor1.5^2}}
=> 1{{#expr:12/3*2}}
=> 8{{#expr:111/3mod10}}
=> 7{{#expr:358mod10*2}}
=> 16{{#expr:1.234round2-1}}
=> 1.2
Funkcija #if prima određenu vrijednost i vraća rezultat ovisno o tome je li vrijednost prazna ili ne.
Sintaksa: {{#if: testni izraz | rezultat ako izraz nije prazan | rezultat ako je izraz prazan ili sadrži samo bjeline }}
{{#if: abc | postoji | ne postoji}}
=> postoji{{#if: | postoji | ne postoji}}
=> ne postoji
Funkcija se najčešće upotrebljava za provjeru ima li parametar predloška asociranu vrijednost ili ne. Parametar nakon imena mora imati znak | kako bi funkcija radila očekivano. Primjerice, ako pozovemo predložak {{Primjer |ime=David}}
, tada je:
{{#if: {{{ime|}}} | postoji | ne postoji }}
=> postoji{{#if: {{{ime|}}} | Bok {{{ime}}}! | Niste unijeli ime }}
=> Bok David!{{#if: {{{prezime|}}} | postoji | ne postoji }}
=> ne postoji{{#if: {{{prezime}}} | postoji | ne postoji }}
=> postoji [a]
Ponašanje parametara detaljnije je prikazano u tablici ispod:
Parametar | {{{1}}} | {{{1|}}} | {{#if: <parametar> | da | ne }} | ||
---|---|---|---|---|---|
Opis | Primjer, pozicijski | {{{1}}} | {{{1|}}} | ||
Nije definiran | {{primjer}}
|
{{{1}}} | da | ne | |
Definiran, ali prazan ili null | {{primjer|}}, {{primjer|1=}}, {{primjer|param=}}
|
ne | ne | ||
Definiran, nije prazan | {{primjer|abc}}, {{primjer|1=abc}}, {{primjer|param=abc}}
|
abc | abc | da | da |
Funkcija parsera #ifeq uspoređuje dvije ulazne vrijednosti i vraća rezultat ovisno o tome jesu li vrijednosti identične. Ako je potrebno raditi više usporedbi i definirati više od dva izlazna slučaja, preporučeno je upotrebljavati funkciju #switch.
Sintaksa: {{#ifeq: prvi ulaz | drugi ulaz | rezultat ako su ulazi jednaki | rezultat ako ulazi nisu jednaki }}
{{#ifeq: abc | abc | jednako | nejednako }}
=> jednako{{#ifeq: abc | def | jednako | nejednako }}
=> nejednako{{#ifeq: Abc | abc | jednako | nejednako }}
=> nejednako
Ako su obje ulazne vrijednosti ispravne brojčane vrijednosti, usporedit će se kao brojevi:
{{#ifeq: 01 | 1 | jednako | nejednako }}
=> jednako{{#ifeq: "01" | "1" | jednako | nejednako }}
=> nejednako{{#ifeq: 0 | -0 | jednako | nejednako }}
=> jednako{{#ifeq: 1e3 | 1000 | jednako | nejednako }}
=> jednako{{#ifeq: {{#expr:10^3}} | 1000 | jednako | nejednako }}
=> jednako
Upotreba magičnih riječi i oznaka u XML-u unutar parserskih funkcija može imati neočekivane rezultate:
{{#ifeq: <nowiki>abc</nowiki> | <nowiki>abc</nowiki> | jednako | nejednako }}
=> nejednako{{#ifeq: <math>abc</math> | <math>abc</math> | jednako | nejednako }}
=> nejednako{{#ifeq: {{:Posebno:PrefixIndex/{{FULLPAGENAME}}/}} | {{:Posebno:PrefixIndex/{{FULLPAGENAME}}/}} | jednako | nejednako }}
=> nejednako
Parserska funkcija #iferror prima unos i vraća jedan od dva rezultata ovisno o tome vraća li unos pogrešku ili ne. Pogreškom se smatra bilo koji objekt u HTML-u s atributom class="error" poput poruka o pogrešci pri izvođenju drugih parserskih funkcija.
Sintaksa: {{#iferror: testni izraz | rezultat ako izraz vraća grešku | rezultat ako je izraz ispravan }}
{{#iferror: {{#expr: 1 + 2 }} | pogrešno | ispravno }}
=> ispravno{{#iferror: {{#expr: 1 + X }} | pogrešno | ispravno }}
=> pogrešno{{#expr: 1 + X }}
=> Pogreška u izrazu: nepoznata riječ »x«
Ako se izostavi rezultat pri ispravnom izrazu, vraća se rezultat testnog izraza (ako nije pogrešan). Ako se izostavi i rezultat pri pogrešci, a rezultat sadrži pogrešku, vraća se prazan rezultat .
{{#iferror: {{#expr: 1 + 2 }} | pogrešno }}
=> 3{{#iferror: {{#expr: 1 + X }} | pogrešno }}
=> pogrešno{{#iferror: {{#expr: 1 + 2 }} }}
=> 3{{#iferror: {{#expr: 1 + X }} }}
=>{{#iferror: {{#expr: . }} | pogrešno | ispravno }}
=> ispravno{{#expr: . }}
=> 0
{{#iferror: <strong class="error">abc</strong> | pogrešno | ispravno }}
=> pogrešno<strong class="error">abc</strong>
=> abc
Parserska funkcija #ifexpr prima matematički izraz i vraća jedan od dvaju rezultata ovisno o tome je li izraz matematički ispravan ili ne.
Sintaksa: {{#ifexpr: matematički izraz | rezultat ako je izraz točan | rezultat ako je izraz pogrešan }}
Svi se izrazi izračunavaju jednako kao kod funkcije #expr. Rezultat izraza zatim se promatra Booleovom logikom (istina ili laž).
{{#ifexpr: 1 > 0 | da | ne }}
=> da{{#ifexpr: 1 < 0 | da | ne }}
=> ne{{#ifexpr: 0 = 0 | da | ne }}
=> da{{#ifexpr: 1 > 0 | | ne }}
=>{{#ifexpr: 1 > 0 }}
=>{{#ifexpr: floor1.5e1 = 15 | da | ne }}
=> da
Booleova logika također je podržana:
{{#ifexpr: 0 = 0 or 1 = 0 | da | ne }}
=> da{{#ifexpr: 0 = 0 and 1 = 0 | da | ne }}
=> ne
Funkcija parsera #ifexist prima naslov stranice i ispisuje vrijednost ovisno o tome postoji li stranica na lokalnom projektu.
Sintaksa: {{#ifexist: ime stranice | rezultat ako je stranica postoji | rezultat ako stranica ne postoji }}
Provjera stranice tom funkcijom dodaje poveznicu na Posebno:Što vodi ovamo za traženu stranicu. Kad bi se primjerice na toj stranici izveo kod {{#ifexist:Abc}}
, pregled Što vodi ovamo sa stranice Abc sadržavao bi i poveznicu na tu stranicu. Provjera stranice koja ne postoji dodaje njezinu poveznicu na Posebno:Tražene stranice (vidi phab:T14019 za detalje).
Ako je stranica stvorena pod navedenim naslovom, funkcija će je tretirati kao da postoji neovisno o tome ima li stranica sadržaj ili je izbijeljena, u kakvu je obliku sadržaj koji se na njoj nalazi (wikitekst, CSS, JavaScript, modul, slika ili drugo), je li vizualno prazna (primjerice ako se sastoji samo od kategorija ili međuwikipoveznica) i služi li za preusmjeravanje. Funkcija će tvrditi da stranica ne postoji samo ako je poveznica na stranicu crvena; u to mogu spadati i stranice koje su postojale, ali su potom izbrisane.
{{#ifexist: Pomoć:Funkcije parsera | postoji | ne postoji }}
=> postoji{{#ifexist: ABCPomoć:Funkcije parseraABC | postoji | ne postoji }}
=> ne postoji
Ako pružimo poveznice na poruke sučelja, funkcija će zaključiti da one postoje isključivo ako postoji lokalna inačica stranice.
{{#ifexist: MediaWiki:Talkpagetext | postoji | ne postoji }}
=> postoji{{#ifexist: MediaWiki:Title-invalid-too-long | postoji | ne postoji }}
=> ne postoji [b]
Funkcija ispravno radi i s posebnim stranicama koje stvaraju proširenja instalirana na trenutačnom projektu.
{{#ifexist: Special:Watchlist | postoji | ne postoji }}
=> postoji{{#ifexist: Posebno:Praćene stranice | postoji | ne postoji }}
=> postoji{{#ifexist: Special:Checkuser | postoji | ne postoji }}
=> postoji [c]{{#ifexist: Posebno:Provjeri suradnika | postoji | ne postoji }}
=> postoji
Pri provjeri datoteka upotreba prefiksa Datoteka: ili File: provjerit će postojanje lokalne inačice datoteke, neovisno o tome postoji li datoteka na Zajedničkom poslužitelju. Upotreba prefiksa Media: pretražit će i Zajednički poslužitelj.
Primjer datoteke sa Zajedničkog poslužitelja:
{{#ifexist: Datoteka:JAB-code.png | postoji | ne postoji }}
=> ne postoji{{#ifexist: File:JAB-code.png | postoji | ne postoji }}
=> ne postoji{{#ifexist: Media:JAB-code.png | postoji | ne postoji }}
=> postoji
Primjer lokalne datoteke:
{{#ifexist: Datoteka:EWTN Logo.svg | postoji | ne postoji }}
=> postoji{{#ifexist: File:EWTN Logo.svg | postoji | ne postoji }}
=> postoji{{#ifexist: Media:EWTN Logo.svg | postoji | ne postoji }}
=> postoji
Funkcija ne radi za međuwikipoveznice:
{{#ifexist: :en:Borg | postoji | ne postoji }}
=> ne postoji{{#ifexist: :mw:Help:Extension:ParserFunctions | postoji | ne postoji }}
=> ne postoji
Funkcija #ifexist smatra se zahtjevnom parserskom funkcijom. Svaka stranica na projektu dopušta zvanje ograničenog broja zahtjevnih funkcija (obično njih 500). U to se ograničenje ubrajaju i zahtjevne funkcije pozvane unutar predložaka u članku. Svaka zahtjevna funkcija pozvana nakon dostizanja tog ograničenja vratit će rezultat false (negativnu granu funkcije) bez provjere rezultata.
Parserska funkcija #switch uspoređuje jednu ulaznu vrijednost s više mogućih ogranaka i vraća izlaznu vrijednost asociranu uz ogranak u kojem je pronađena podudarnost.
Sintaksa:
{{#switch: vrijednost koju uspoređujemo | slučaj1 = rezultat1 | slučaj2 = rezultat2 | ... | slučajN = rezultatN | #default = rezultat ako nema podudarnosti }}
Ako se grana #default izostavi, a nema podudarnosti, funkcija neće ispisati nikakav rezultat. Zadnja grana bez jednakosti predodređeno je default, pa se tekst "#default=" može i izostaviti.
Primjeri:
{{#switch: abc |abc = rezultat1 |def = rezultat2 |ghi = rezultat3 |#default = ništa}}
=> rezultat1{{#switch: def |abc = rezultat1 |def = rezultat2 |ghi = rezultat3 |#default = ništa}}
=> rezultat2{{#switch: ghi |abc = rezultat1 |def = rezultat2 |ghi = rezultat3 |#default = ništa}}
=> rezultat3{{#switch: zzz |abc = rezultat1 |def = rezultat2 |ghi = rezultat3 |#default = ništa}}
=> ništa{{#switch: zzz |abc = rezultat1 |def = rezultat2 |ghi = rezultat3 | ništa}}
=> ništa
Kao što je bio slučaj s #ifeq, ako je vrijednost koja se ispituje numerička, uspoređivat će se kao broj:
{{#switch: 0 + 1 | 1 = jedan | 2 = dva | drugo }}
=> drugo{{#switch: {{#expr: 0 + 1}} | 1 = jedan | 2 = dva | drugo }}
=> jedan
Funkcija razlikuje velika i mala slova:
{{#switch: a | a = A | b = B | C }}
=> A{{#switch: A | a = A | b = B | C }}
=> C
Funkcija staje čim se pronađe prva podudarnost. Sva ostala poklapanja (ako postoje) ignoriraju se:
{{#switch: b | f = abc | b = def | b = ghi | ništa }}
=> def
Funkcija podržava mogućnost da nekoliko slučajeva vraća isti rezultat:
{{#switch: vrijednost | 1 = prvi | 2 = drugi | 3|4|5 = treći do peti | 6|7 = šesti ili sedmi | 8 = osmi | #default: više od osam }}
U tom slučaju vrijednosti 3, 4 ili 5 vraćaju rezultat "treći do peti", a vrijednosti 6 ili 7 vraćaju "šesti ili sedmi".
Funkcija kao vrijednost može provjeravati i vrijednost parametra predloška. Za razliku od funkcije #if uz navođenje parametra nije nužno pisati znak |
. Primjerice:
{{#switch: {{{1}}} |abc = rezultat1 |def = rezultat2 |#default = ništa}}
Ako je u gornjem kodu prvi parametar jednak vrijednosti "abc", funkcija će vratiti "rezultat1", a ako je jednak "def", funkcija će vratiti "rezultat2". Ako prvi parametar nije naveden ili nema vrijednost, ili ako ima vrijednost koja nije navedena u funkciji switch, funkcija će vratiti "ništa".
- ↑ Nedostaje znak
|
; ovo se shvaća kao doslovni unos "{{{prezime}}}" - ↑ Ova poruka postoji na TranslateWikiju, i koristi se u sučelju, ali ne postoji lokalno premoštenje ovog prijevoda
- ↑ Na ovom je projektu aktivno proširenje mw:Extension:Checkuser