中共教育部党组关于林忠钦、张杰同志职务任...
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