Toggle menu
243,8 tis.
103
18
640,1 tis.
Hrvatska internetska enciklopedija
Toggle preferences menu
Toggle personal menu
Niste prijavljeni
Your IP address will be publicly visible if you make any edits.

Pomoć:Funkcije parsera: razlika između inačica

Izvor: Hrvatska internetska enciklopedija
Nema sažetka uređivanja
 
Redak 158: Redak 158:
Sintaksa: <code><nowiki>{{#ifexist:</nowiki> ime stranice | rezultat ako je stranica postoji | rezultat ako stranica ne postoji }}</code>
Sintaksa: <code><nowiki>{{#ifexist:</nowiki> ime stranice | rezultat ako je stranica postoji | rezultat ako stranica ne postoji }}</code>


Provjera stranice tom funkcijom dodaje poveznicu na Posebno:Što vodi ovamo za traženu stranicu. Kad bi se primjerice na toj stranici izveo kod  <code><nowiki>{{#ifexist:Abc}}</nowiki></code>, 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).
Provjera stranice tom funkcijom dodaje poveznicu na Posebno:Što vodi ovamo za traženu stranicu. Kad bi se primjerice na toj stranici izveo kod  <code><nowiki>{{#ifexist:Abc}}</nowiki></code>, 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 Wikimedijin Phabricator [https://phabricator.wikimedia.org/T14019 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.
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.

Posljednja izmjena od 20. svibanj 2025. u 02:19

Funkcije parsera svojevrsne su magične riječi koje primaju parametre i vraćaju rezultat nakon obrade.

Vidi članke na MediaWikiju Help:Magic words#Parser functions i Help:Extension:ParserFunctions.

Uvjetne parserske funkcije

expr

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

if

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

ifeq

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

iferror

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

ifexpr

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

ifexist

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 Wikimedijin Phabricator 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 }} => ne postoji [c]
  • {{#ifexist: Posebno:Provjeri suradnika | postoji | ne postoji }} => ne postoji

Pri provjeri datoteka upotreba prefiksa Datoteka: ili File: provjerit će postojanje lokalne inačice datoteke, neovisno o tome postoji li datoteka na Wikimedijinom Zajedničkom poslužitelju. Upotreba prefiksa Media: pretražit će i Zajednički poslužitelj.

Primjer datoteke s Wikimedijinog 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 }} => ne postoji


Ograničenja ifexist

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.

switch

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

Grupiranje rezultata

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

Upotreba uz parametre predložaka

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

time

Podrobniji članak o temi: Pomoć:Vremenska funkcija

Bilješke

  1. Nedostaje znak |; ovo se shvaća kao doslovni unos "{{{prezime}}}"
  2. Ova poruka postoji na TranslateWikiju, i koristi se u sučelju, ali ne postoji lokalno premoštenje ovog prijevoda
  3. Na ovom je projektu aktivno proširenje mw:Extension:Checkuser