什么是头七
Gre za kopijo temeljne predlo?ne strani z Meta. Kopije ne urejajte. Stran posodobite s kopiranjem iz meta, pri ?emer pazite, da se bodo ohranile vse za Wikipedijo specifi?ne predloge.
Opombe, prosim dodajte na pogovorni strani.
Ta raz?iritev programja MediaWiki je zbirka funkcij za raz?lenjevanje kode. Funkcije za raz?lenjevanje kode imajo v splo?nem skladnjo:
- {{#functionname: argument 1 | argument 2 | argument 3...}}
Funkcije
[uredi | uredi kodo]- Nasvet: Uporabo izrazov s funkcijami za raz?lenjevanje kode si lahko neposredno prika?emo s Special:ExpandTemplates.
Ta modul trenutno definira osem funkcij:
expr,
if,
ifeq,
ifexist,
ifexpr,
switch, and
time, and
rel2abs.
#expr:
- Na to?nost in format numeri?nih rezultatov vpliva tudi operacijski sistem stre?nika.
#expr:
[uredi | uredi kodo]Funkcija expr izra?unava matemati?ne izraze na osnovi permutacije ?tevil (ali spremenljivk / parametrov, ki se prevedejo v ?tevila) in operatorjev. Z nizi ne deluje; zanje uporabite funkcijo ifeq. Skladnja je naslednja:
{{ #expr: expression }}
Sledi seznam podprtih operatorjev. Za ve? podrobnosti glej m:Pomo?:Ra?unanje, v grobem pa gre za (1) grupiranje (oklepaji), (2) unarne (znaki + / - in NOT), (3) multiplikativne (*, /, div, mod), (4) aditivne (+ and -), (5) zaokro?itveni, (6) primerjalne (=, !=, <, > itd.), (7) logi?ni AND, (8) logi?ni OR. V istem prednostnem razredu so operatorji obravnavani z leve na desno. Kot vedno je bolje uporabiti nekaj odve?nih oklepajev kot napa?no jedrnato kodo.
Operator | Operacija | Zgled |
---|---|---|
none |
{{ #expr: 123456789012345 }} = 1.2345678901234E+14 | |
{{ #expr: 0.000001 }} = 1.0E-6 | ||
( ) | Operatorji grupiranja |
{{ #expr: (30 + 7) * 7 }} = 259 |
+ | Unarni znak + |
{{ #expr: +30 * +7 }} = 210 |
- | Unarni znak - (negacija) |
{{ #expr: -30 * -7 }} = 210 |
not | unarni NOT, logi?ni NOT |
{{ #expr: not 0 * 7 }} = 7 |
* | mno?enje |
{{ #expr: 30 * 7 }} = 210 |
/ | deljenje, enako kot div |
{{ #expr: 30 / 7 }} = 4.2857142857143 |
div | deljenje, enako kot /, brez celo?tevil?nega deljenja |
{{ #expr: 30 div 7 }} = 4.2857142857143 |
mod | Modulo, ostanek po celo?tevil?nem deljenju. Pozor, div in mod sta druga?na kot pri programskih jezikih. |
{{ #expr: 30 mod 7 }} = 2 |
+ | Se?tevanje |
{{ #expr: 30 + 7 }} = 37 |
- | Od?tevanje |
{{ #expr: 30 - 7 }} = 23 |
round | Zaokro?i ?tevilo na levi na potenco 1/10, dano na desni |
{{ #expr: 30 / 7 round 4 }} = 4.2857 |
= | Enako (numeri?no in logi?no) |
{{ #expr: 30 = 7 }} = 0 |
<> | Neenako, enako kot != |
{{ #expr: 30 <> 7 }} = 1 |
!= | Neenakost, enako kot <>, logi?ni xor |
{{ #expr: 1 != 0 }} = 1 |
< | Manj?e |
{{ #expr: 30 < 7 }} = 0 |
> | Ve?je |
{{ #expr: 30 > 7 }} = 1 |
<= | Manj?e ali enako |
{{ #expr: 30 <= 7 }} = 0 |
>= | Ve?je ali enako |
{{ #expr: 30 >= 7 }} = 1 |
and | Logi?ni AND |
{{ #expr: 4 < 5 and 4 mod 2 }} = 0 |
or | Logi?ni OR |
{{ #expr: 4 < 5 or 4 mod 2 }} = 1 |
Booleanovi operatorji obravnavajo 0 kot vrednost false (neresni?no), vsa druga ?tevila pa kot true (resni?no). Pri izlo?ku se true prika?e kot 1.
?tevila so decimalno podana z "." za decimalno piko. Za spremembo decimalne pike v vejico za krajevno prilagoditev programja lahko uporabite funkcijo formatnum:
. Znanstvena notacija z eksponentom E plus za izraze ?e ni podprta, uporablja pa se pri izlo?ku. Za podrobnosti glej m:Pomo?:Ra?unanje.
#if:
Funkcija {{#if:}} je konstrukt vrste ?e-potem-sicer. Njena skladnja je:
{{ #if: <niz pogoja> | <besedilo za potem> | <besedilo za sicer> }} {{ #if: <niz pogoja> | <besedilo za potem> }}
Uporabljeni pogoje je "Niz pogoja je ne-prazen". Tako je pri praznem nizu pogoja ali nizu pogoja, ki sestoji le iz belih znakov, pogoj neresni?en in programje vrne besedilo sicer. Sicer vrne besedilo potem. Besedilo sicer lahko izpustite, pri ?emer bo, kadar bo pogoj neresni?en, rezultat prazen.
Zgled:
{{ #if: {{{parameter|}}} | Parameter je definiran. | Parameter je nedefiniran ali prazen }}
Pri tem poudarimo, da niz pogoja sam po sebi ni niz kot npr. "1 = 2"; na primer, {{ #if: 1 = 2 | da | ne }} vrne "da", saj niz "1 = 2
" ni prazen. Znakov "=" in matemati?nih izrazov funkcija {{#if:}} torej ne podpira.
#ifeq:
Funkcija {{#ifeq:}} primerja dva niza ali ?tevili in glede na rezultat primerjave vrne drug niz. Skladnja je:
{{ #ifeq: <besedilo 1> | <besedilo 2> | <besedilo pri enakosti> | <besedilo pri neenakosti> }}
Kadar je oba niza mogo?e tolma?iti kot ?tevilo, je rezultat ?tevil?en. Za primerjavo nizov dodajte znake, ki jih kot ?tevilo ni mogo?e tolma?iti:
- {{ #ifeq: +07 | 007 | 1 | 0 }} vrne 1
- {{ #ifeq: "+07" | "007" | 1 | 0 }} vrne 0
Primerjava nizov upo?teva tudi velikost ?rk:
- {{ #ifeq: A | a | 1 | 0 }} vrne 0
- Zaradi skladnosti s starej?imi predlogami funkcija #if: ne more neposredno lo?evati podanih in nepodanih vrednosti parametrov. Gre za bli?njico za primerjavo s praznim nizom. Nepodane parametre je mogo?e neposredno odkriti s funkcijo #ifeq::
- {{ #if: {{{x| }}} | neprazno | prazno }} = prazno,
- {{ #ifeq: {{{x| }}} | | prazno | neprazno }} = prazno,
- {{ #ifeq: {{{x| }}} | {{{x|u}}} | definirano | nedefinirano }} = nedefinirano.
- Nedolo?en parameter brez privzete vrednosti ?teje v primerjavi kot niz, ki sestoji iz oznake:
- {{ #ifeq: {{{x}}} | {{concat|{|{|{x}|}|}}} | 1 | 0 }} = 1.
#ifexist:
Funkcija {{#ifexist:}} vrne enega od dveh rezultatov, odvisno od tega, ali dolo?ena stran obstaja.
{{ #ifexist: <page name> | <wikitext if page exists> | <wikitext if page does not exist> }}
Veljajo obi?ajna pravila za razlikovanje velikosti ?rk: kadar stran obstaja, da pozitiven rezultat tudi nekanoni?no ime strani. Zgled na Meta:
- {{ #ifexist: Bugs|Foo|RFC 3092 }} vrne RFC 3092, kajti Foo obstaja
- {{ #ifexist: bugs|Foo|RFC 3092 }} vrne RFC 3092, saj je foo v kanoni?ni obliki obstoje?i Foo
- {{ #ifexist: BUGS|Foo|RFC 3092 }} vrne RFC 3092, saj FOO ne obstaja
- {{ #ifexist: m:Help:Calculation|Da|Ups }}, ?etudi m:Help:Calculation obstaja, zaradi interwikipredpone vrne Ups.
Prvi parameter je naslov, ki ga naj programje i??e, drugi je pozitivni rezultat, tretji pa negativni rezultat. Kadar vpisani parameter ne vrne veljavnega naslova objekta, je rezultat negativen.
Enak rezultat da m:Template:exists (pogovor, povezave, uredi), razen da je rezultat za interwiki-povezavo pozitiven. Interwikipovezavo lahko obravnavate tudi z m:Template:if interwiki link (pogovor, povezave, uredi).
#ifexpr:
Funkcija {{#ifexpr:}} obravnava matemati?ni izraz in glede na rezultat vrne enega od dveh nizov.
{{ #ifexpr: <expression> | <then text> | <else text> }}
?e je rezultat izraza ni?, funkcija vrne besedilo sicer, druga?e pa besedilo potem. Skladnja izraza je enaka kot za expr.
- Trenutno da besedilo sicer tudi prazen izraz:
- {{ #ifexpr: {{ns:0}}|Toast| '''ali sicer''' }} vrne ali sicer
- ?e izpustite tako besedilo potem kot besedilo sicer, izlo?ka ni, razen morda sporo?ilo o napaki. S tem lahko preverite pravilnost izraza oziroma besedilo sporo?ila o napaki (posnemane trditve, prisiljene napake):
- {{ #ifexpr: 1/{{#ifeq: {{ns: 4 }} | Meta | 1 | 0 }} }} Deljenje z ni?lo. -- rezultata ni, torej je "1/{{#ifeq: {{ns:4}}|Meta|1|0}}" pravilen izraz.
- {{ #ifexpr: 1/{{#ifeq: {{ns: 0 }} | Meta | 1 | 0 }} }} Deljenje z ni?lo.
- {{ #if: {{#ifexpr: 1=2 }} | narobe | pravilno }} pravilno -- "1=2" je pravilen booleanski izraz (ne smemo ga zamenjevati z izrazom z vrednostjo 1, ki predstavlja "prav")
- {{ #if: {{#ifexpr: 1E2 }} | narobe | pravilno }} pravilno -- "1E2" v izrazih ni dovoljeno
- {{ #if: {{#ifexpr: 1/0 }} | narobe | pravilno }} narobe -- "1/0" ni dovoljeno
- {{ #if: {{#ifexpr: a=b }} | narobe | pravilno }} narobe ("a=b" ni dovoljeno, za primerjavo nizov uporabi #ifeq.
Primer uporabe: {{ #if: {{#ifexpr: {{PAGENAME}} }} || rezultat, kadar je PAGENAME ?tevilo (ali pravilen numeri?ni izraz) }}
Za uporabo glej tudi m:Template:evalns (pogovor, povezave, uredi).
#switch:
Funkcija switch
primerja posamezno vrednost z ve? drugimi in vrne niz, ?e najde par. Skladnja je v osnovi:
{{#switch: <primerjalna vrednost> | <vrednost1> = <rezultat1> | <vrednost2> = <rezultat2> | ... | <vrednostn> = <rezultatn> | <prednastavljeni rezultat> }}
switch
i??e po danih vrednostih, dokler ne najde para s primerjalno vrednostjo. Ko ga najde, vrne rezultat za to vrednost (besedilni niz po ena?aju). Kadar ne najde nobenega para, vendar pa zadnji predmet vsebuje ena?aj, vrne kot privzeto vrednost slednjega. Kadar rezultat mora vsebovati ena?aj, lahko uporabite #default
:
{{#switch: <primerjalna vrednost> | <vrednost> = <rezultat> | #default = <prednastavljeni rezultat> }}
Mogo?e je oblikovati tudi izpu??ene vrednosti (kar zmanj?a potrebo po podvajanju rezultatov). Zgled:
{{#switch: <primerjalna vrednost> | <vrednost1> | <vrednost2> | <vrednost3> = <rezultat1, 2, 3> | ... | <vrednostn> = <rezultatn> | <prednastavljeni rezultat> }}
Vrednost1 in vrednost2 ne vsebujeta ena?aja. ?e se ujemata, dobita rezultat za vrednost3 (t.j., kar koli je v rezultat3).
- Pri #ifeq: je primerjava numeri?na, kjer je le mogo?e:
- {{ #switch: +07 | 7 = Da | 007 = Vez | Ne }} vrne Da
- {{ #switch: "+07"|"7"= Da |"007"= Vez | Ne }} vrne Ne
- Ujemajo?a se vrednost je lahko prazna, zato sta naslednja konstrukta enakovredna:
- {{ #if: {{ns:0}} | neprazno | prazno }} vrne prazno
- {{ #switch: {{ns:0}}|=prazno|neprazno }} vrne prazno
Primerjava nizov razlikuje velikost ?rk:
- {{ #switch: A | a=male ?rke | A=VELIKE }} vrne VELIKE
- {{ #switch: A | a=male ?rke | VELIKE }} vrne VELIKE
- {{ #switch: a | a=male ?rke | VELIKE }} vrne male ?rke
Tega ne smemo zamenjevati s tem, da imena funkcij raz?lenjevalnika delujejo pri kakr?nih koli ?rkah:
- {{ #swItch: A | a=male ?rke | VELIKE }} vrne VELIKE
Da bi bil stavek #switch neodvisen od velikost ?rk, lahko dose?emo s konstruktom {{lc:}} ali {{uc:}}
- {{ #switch: {{lc:A}} | a=male ?rke | A=VELIKE }} vrne male ?rke
- {{ #switch: {{lc:A}} | a=male ?rke | VELIKE }} vrne male ?rke
- {{ #switch: {{lc:a}} | a=male ?rke | VELIKE }} vrne male ?rke
To se navadno uporablja v predlogah, ko ?elimo neodvisnost od velikosti ?rk pri vrednostih parametrov.:
{{#switch: {{lc: {{{1| B }}} }} | a | b | c = '''''abc''' ali '''ABC''''' | A | B | C = ''Okvara spomina zaradi kozmi?nega sevanja'' | #default = N/A }}
vrne abc ali ABC
Namesto #ifeq lahko uporabimo tudi #switch:
- {{ #switch: a | a=pravilno | narobe }} vrne pravilno
- {{ #ifeq: a | a | pravilno | narobe }} vrne pravilno
#time:
Funkcija {{#time:}} je funkcija za oblikovanje ?asa in datuma (samo za datume od 1970 naprej!). Njena skladnja je bodisi
{{ #time: format }} {{ #time: format | ?as }}
Kadar ?as ni dolo?en, se uporabi ?as, ob katerem je bil ?lanek pretvorjen v HTML-kodo. Ta ?as se lahko zaradi stre?ni?ke predpomnjenja za teden dni razlikuje od ?asa, ko je bil ?lanek prikazan, zato so lahko potrebne ro?ne posodobitve. To dose?emo s shranjenjem strani, ne da bi napravili kakr?no koli spremembo (ni?elno urejanje), s prikazom strani z vpisanim nizom action=purge
v iskalnem nizu spletnega naslova (URL) ali tako, da si stran ogledamo pri izklopljenem predpomnjenju strani v uporabni?kih nastavitvah (MediaWiki).
Parameter oblika je niz oblike, podoben tistemu, kot ga uporablja PHP-jev datum.
Naslednje kode za oblike imajo enako vrednost kot v PHP. Pomembno razlikovanje od delovanja PHP, razen glede internacionalizacije (t.j. jezikovne in krajevne prilagoditve), je napaka raz?lenjevalnika kode in o njej obvestite razvijalce programja. Vse numeri?ne kode za obliko vrnejo ?tevila, oblikovana v skladu s krajevnim jezikom. To lahko povozite s kodo xn, kot je opisano spodaj.
Koda | Opis | Zgled izlo?ka | Trenutni izlo?ek |
---|---|---|---|
Leto: | |||
Y | Leto s ?tirimi ?tevkami. | npr. 2006 | 2025 |
y | Leto z dvema ?tevkama. | od 00 do 99, npr. 06 za leto 2006. | 25 |
Mesec: | |||
n | ?tevilka meseca, brez uvodne ni?le. | od 1 do 12 | 7 |
m | Ime meseca, z uvodno ni?lo. | od 01 do 12 | 07 |
M | Okraj?ava za ime meseca. Pogosto krajevno prilagojeno. | od jan do dec | jul. |
F | Popolno ime meseca. Pogosto krajevno prilagojeno. | januar | julij |
Teden: | |||
W | ?tevilka tedna po standardu ISO 8601 (ISO-leta imajo popolne tedne od ponedeljka do nedelje; prvi teden v letu po ISO vedno vsebuje 4. januar ali prvi ?etrtek navadnega leta), z ni?lo. | od 01 do 52 ali 53 (odvisno od leta) | 29 |
Dan: | |||
j | dan v mesecu, brez uvodne ni?le. | 1 to 31 | 19 |
d | dan v mesecu, z uvodno ni?lo. | od 01 do 31 | 19 |
z | dan v letu (z za?etkom pri 0) | od 0 do 364 oz. 365 na prestopno leto | 199 |
D | Okraj?ava za dan v tednu. Redko krajevno prilagojeno. | od pon (Mon) do ned (Sun) | sob. |
l | Popolno ime dneva v tednu. Redko krajevno prilagojeno. | od ponedeljka (Monday) do nedelje (Sunday) | sobota |
N | Dan v tednu po ISO 8601 (teden po ISO 8601). | od 1 (za ponedeljek) do 7 (za nedeljo) | 6 |
w | ?tevilka dneva v tednu (ameri?ki teden). | od 0 (za nedeljo, Sunday) do 6 (za soboto, Saturday) | 6 |
Ura: | |||
a | am (med 01:00:00 in 12:59:59 na isti dan) ali pm, z malimi ?rkami (uporaba pri 12-urni obliki). | am ali pm | pm |
A | Enako kot pri zgornji kodi a, le z velikimi ?rkami. | AM ali PM | PM |
g | 12-urna oblika ure brez uvodnih ni?el (ena ali dve ?tevki, za uporabo skupaj z am/pm ali AM/PM). | od 1 do 12 | 2 |
h | 12-urna oblika ure, z uvodno ni?lo (dve ?tevki, za uporabo skupaj z am/pm ali AM/PM). | od 01 do 12 | 02 |
G | 24-urna oblika ure, brez uvodne ni?le (ena ali dve ?tevki) | od 0 do 23 | 14 |
H | 24-urna oblika ure, z uvodno ni?lo (dve ?tevki). | od 00 do 23 | 14 |
Minute in sekunde: | |||
i | Minuta z uvodno ni?lo (dve ?tevki). | od 00 do 59 | 06 |
s | Sekunda z uvodno ni?lo (dve ?tevki). | od 00 do 59 | 53 |
U | Sekunde od 1. januarja 1970 00:00:00 GMT naprej. | od 0 do neskon?no | 1752934013 |
Drugo: | |||
L | Ali gre za prestopno leto. | 1, kadar gre za prestopno leto, sicer 0. | 0 |
t | ?tevilo dni v mesecu. | od 28 do 31 | 31 |
c | V skladu z ISO 8601 oblikovan datum, enako kot {{#time:Y-m-dTH:i:s{{#time:+H:i|+0 ur}}}}. | stalna dol?ina niza | 2025-08-06T14:06:53+00:00 |
r | V skladu z RFC 2822 oblikovan datum, enako kot {{#time:D, j M Y H:i:s {{#time:+H:i|+0 ur}}}}. | spremenljiva dol?ina niza | Sat, 19 Jul 2025 14:06:53 +0000 |
Naslednje kode za obliko so raz?iritve skladnje PHP:
Koda | Opis |
---|---|
xn | Oblikuje naslednjo numeri?no kodo kot surovo ASCII-?tevilo. Zgled: v hindiju {{ #time: H, xnH }} vrne ??, 06. |
xN | Trajno oblikuje naslednjo numeri?no kodo kot surovo ASCII-?tevilo. Tako kot xn, razen da traja do konca niza oz. do ponovitve iste kode. |
xr | Oblikuje naslednjo numeri?no kodo kot rimsko ?tevilko. Deluje le za ?tevila do 3000. |
xg | Vrne ime meseca v rodilniku. Namenjeno jezikom, kjer obstaja za taka imena razlika med rodilnikom in imenovalnikom. |
xx | Dobesedni x |
Kateri koli neprepoznani znak bo vrnjen nespremenjen. Za pridobitev dobesednih znakov lahko uporabite tudi dva dogovora o navajanju.
- Znaki v parnih narekovajih se obravnavajo dobesedno (narekovaji se odstranijo). Neparni narekovaji se obravnavajo kot dobesedni navedek. Zgled:
- {{ #time: "Teko?i mesec je" F }} → Teko?i mesec je julij
- {{ #time: i's" }} → 06'53"
- Podprta je tudi izpustitev z levo po?evnico, kot deluje pri datumih v PHP. \H vrne dobesedni H, \" vrne dobesedni ".
V prihodnosti bo glede na potrebe uporabnikov raz?iritve morda dodanih ?e ve? kod za obliko. To lahko pomeni bolj popolno uvedbo kod PHP za obliko ali dodatne kode x.
Oblika parametra ?as je identi?na obliki, ki jo uporablja funkcija strtotime() v PHP. Podpira tako absolutne kot relativne datume, npr. "December 11" in / ali "+10 hours", kar lahko uporabimo na primer za prilagoditev ?asovnega pasu. Za ve? podatkov glej priro?nik tar GNU.
Zgledi
[uredi | uredi kodo]- {{ #time: l, j F Y |20070304 }} vrne "nedelja, 4. marec 2007"
- {{ #time: l, j F Y |, 2007-3-4 }} vrne "nedelja, 4. marec 2007"
- {{ #time: l, j F Y | 4. March 2007 }} vrne "nedelja, 4. marec 2007"
- {{ #time: l, j F Y | -32 days }} vrne "torek, 17. junij 2025" (pred 32 dnevi)
- {{ #time: H:i | +6 hours }} vrne "20:06" (6 ur pozneje kot UTC)
- {{ #time: H:i | 8:15 +6 hours }} vrne "14:15"
- {{ #time: m/Y | -17 months }} vrne "02/2024" (pred 17 meseci)
V kombinaciji z uporabni?ko dolo?enim oblikovanjem datumov:
- {{ #time: l, [[j. F]] [[Y]] | 4 March 2007 }} vrne "nedelja, 4. marec 2007"
- {{ #time: l, [[Y-m-d]] | 4 March 2007 }} vrne "nedelja, 2025-08-06"
Oba vrneta uporabni?ko dolo?eno obliko. Kadar kateri izmed njiju ni bil dolo?en kot preferen?ni v nastavitvah, se med seboj razlikujeta.
Razpon
[uredi | uredi kodo]Razpon pravilnega delovanja sega od 1. januarja 1970 00:00:01 do 19. januarja 2038 03:14:07, ali od 1 do sekund po za?etku leta 1970 (glej Year 2038 problem). Za datume, ki so zunaj tega obmo?ja, lahko uporabimo predloge za ra?unanje datumov.
Datumi pred 1901 vrnejo sporo?ilo o napaki, datumi med 1901 in 1970 pa celo (morda odvisno od stre?nika) napa?en rezultat (!):
- {{
#time:c|5 April 1967
}} vrne 2025-08-06T00:00:00+00:00 - {{
#time:c|5 April 1867
}} vrne 2025-08-06T00:00:00+00:00
Nepopolni podatki
[uredi | uredi kodo]- {{
#time:c|2007
}} vrne 2025-08-06T00:00:00+00:00 (ni leto, temve? ?as: danes, 20:07) - {{
#time:c|1997
}} vrne 2025-08-06T00:00:00+00:00 (19:97 ni veljaven ?as, zato se tolma?i kot leto, vrne trenutni datum in ?as v tem letu) - {{
#time:c|1967
}} vrne 2025-08-06T00:00:00+00:00 (19:67 ni veljaven ?as, zato se tolma?i kot leto; vrne datum zunaj razpona, ki se spremeni na za?etek veljavnega razpona) - {{
#time:c|April 2007
}} vrne 2025-08-06T00:00:00+00:00 (za?etek meseca) - {{
#time:c|5 April
}} vrne 2025-08-06T00:00:00+00:00 (dolo?eni datum teko?ega leta)
29. februar
[uredi | uredi kodo]Posebno pozorni moramo biti pri 29. februarju, saj se {{#time:j|February 29}} spreminja z letom. Zgled:
- {{ #time: j|February 29 2006 }} vrne 1
- {{ #time: j|February 29 2008 }} vrne 29
#rel2abs:
{{#rel2abs:}} pretvori relativno pot v absolutno pot.
{{ #rel2abs: pot }} {{ #rel2abs: pot | pot do osnove }}
Relativna pot je pot, ki se za?ne z '/', './' ali '../', vsebuje '/../' ali '/.' ali pa gre preprosto za niz '..' ali '.'. ? je podana pot do osnove, mora biti izra?ena z absolutno skladnjo.
Zgled:
- Kadar le?i na Pomo?:Foo/bar in kli?e {{ #rel2abs: ../baz }}, bo rezultat Pomo?:Foo/baz
- Kadar le?i na Pomo?:Foo in kli?e {{ #rel2abs: ../baz }}, bo rezultat baz
- Kadar le?i na Pomo?:Foo in kli?e {{ #rel2abs: ../../baz }}, bo rezultat Napaka: neveljavna globina poti: ?Pomo?:Foo/../../baz? (poskus dostopa do vozli??a nad korenskim vozli??em).
- Kadar le?i na {{ #rel2abs: ../baz | Pomo?:Bar/foo }}, bo rezultat Pomo?:Bar/baz
- Kadar le?i na {{ #rel2abs: Pomo?:Foo/bar/../baz }}, bo rezultat Pomo?:Foo/baz
Pri tem ni preverjanja, ali pot obstaja. To lahko dose?emo v kombinaciji s funkcijo {{#ifexist:}}:
- {{ #ifexist: {{#rel2abs: .. }} | '..' obstaja | '..' ne obstaja }} gives '..' ne obstaja
- {{ #ifexist: {{#rel2abs: . }} | '.' obstaja | '.' does not exist }} gives '.' obstaja
Opozorila
[uredi | uredi kodo]Tako kot druge funkcije za raz?lenjevanje tudi to raz?iritev na predvidljiv na?in zadeva hro?? 5678. Povzetek: nedefinirane parametre lahko prepi?ejo ustrezajo?i parametri; podrobnosti so opisane na straneh m:Help:ParserFunctions/5678 in pomo? za substitucijo. Substitucija je edini primer, kjer je to bistvenega pomena. Na definirane parametre to ne vpliva.
Substitucija
[uredi | uredi kodo]Uporaba subst: je pri funkcijah raz?lenjevalnika mogo?a, ?e le med subst: in # ni presledka. Za podrobnosti glej m:Help:Substitution. Vedite, da razen ob uporabi tehnike, kot je neobvezna substitucija, substitucija predloge s funkcijami raz?lenjevalnika teh funkcij ne zamenja z njihovim rezultatom. To je pogosto ne?eleno.
Glej tudi predhodni razdelek.
Razpredelnice
[uredi | uredi kodo]V pogojnih konstruktih wikiskladnja z navpi?nicami trenutno ?e ne deluje. Pomagate si lahko z dvema obhodnima potema:
- Navpi?nico lahko pred funkcijami raz?lenjevalnika skrijete tako, da jo postavite v predlogo. Zgled je npr. m:Template:! (pogovor, povezave, uredi).
- Uporabite lahko tudi HTML-skladnjo za razpredelnice.
- Popolnoma prazne vrstice ali stolpci se ne prika?ejo (glej tudi m:Help:Table). Prazne celice lahko na straneh, na katere ne vpliva hro?? 5569, preoblikujete tudi v la?ne celice .
Sicer pa sta bila | in = v predlogah vedno te?avna za uporabo.
Kadar odpove vse drugo, poskusite v svojih LocalSettings.php
nastaviti $wgUseTidy=true;
.
Izrazi
[uredi | uredi kodo]- div ne omogo?a celo?tevil?nega deljenja in je odve?. Za realna deljenja uporabite / (po?evnico).
- mod uporablja PHP-jev operator %, ki se razlikuje od modulo-operatorjev v vseh drugih programskih jezikih. Glej tudi m:Template:mod (pogovor, povezave, uredi) in hro?? 6068.
- mod v?asih vrne napa?ne rezultate pri istih vnesenih vrednostih. Glej hro?? 6356 in m:Help:ParserFunctions/MOD10000. Posodobitev: zdi se, da pri vrednostih pod 1E+12 ni te?av.
- Veljavne rezultate funkcije #expr:, kot je 1.0E-7, vnos za #expr: ?e ne podpira:
- {{#expr:1.0E-7}} da 1.0E-7.
- round 0 da v nekaterih okoli??inah namesto vrednosti 0 vrednost -0. Pri izrazu x se tej nenavadnosti izognete z vpisom 0+(x).
Pogojni?ki beli znaki
[uredi | uredi kodo]Ker pogojniki ob navpi?nicah (in pri poimenovanih, ne pa tudi nepoimenovanih parametrih predloge) odstranijo uvodne in zaklju?ne bele znake, ni takoj jasno, kako pogojno vstaviti beli znak ali zaporedje belih znakov. Kadar ?elimo vstaviti le presledke, lahko uporabimo HTML-kodo  
, ki vstavi " ".
Kadar ?elimo vstaviti nove vrstice ali druga?ne bele znake, lahko med navpi?nico in bele znake vstavimo nenatisljive bele znake:
prvi odstavek. {{#if:{{{paragraph}}}|<nowiki /> drugi odstavek.}}
prvi odstavek.
drugi odstavek.
Izvedba kode
[uredi | uredi kodo]v primeru pogojni?kih funkcij raz?lenjevanja (if, ifeq, ifexist, ifexpr, switch), se wikibesedilo vsakega primera (del potem, del sicer itd.), ?etudi je izlo?ek odvisen od pogoja, notranje "izvede"/"obdela"/"raz?leni" neodvisno od tega, ali je pogoj izpolnjen. To zadeva:
- predraz?iritveno velikost vklju?itve (glej w:Wikipedia:Template limits)
- v primeru pogojni?kih povezav in vklju?itev: tabelo povezav na stran in tabelo povezav na predlogo; zato tudi:
- sezname povezav z dolo?ene strani in vanju vklju?ene strani (na urejevalnem polju izvorne strani in povratne povezave ciljne strani
- [[m:Help:Special_page#Special pages for all users|seznam ?elenih strani}}
- kaskadno za??ito strani - vklju?itev v del potem ali del sicer itd. v klicu pogojni?ke raz?lenjevalne funkcije povzro?i za??ito vklju?ene strani neodvisno od pogoja; glej tudi m:Help:Cascading protection demo
- drugo, glej npr. m:VariablesExtension
Morda si ?elimo zmanj?ati obdelavo na dejansko uporabljeno wikibesedilo, zmanj?ati predraz?iritveno vklju?itveno velikost, se izogniti nerazlo?ljivim predmetom na seznamu povezav in vklju?itev in v seznamu ?elenih strani in se izogniti ne?eleni kaskadi za??ite. To lahko dose?emo tako, da z uporabo funkcije #ifexpr ipd. izberemo predlogo ali cilj povezave in celotno raz?lenjevalno funkcijo raz?lenjevanja postavimo v oklepaje, npr. {{ {{#ifexpr:..|a|b}} | parametri }} namesto {{ #ifexpr:.. | {{a|parametri}} | {{b |parametri}} }}. Kadar sicer-dela ni, lahko uporabimo slepo predlogo, npr. m:Template:x0 (pogovor, povezave, uredi):{{ {{#ifexpr:..|a|x0}} | parametri }} namesto {{ #ifexpr:.. | {{a|parameters}} }}. Kadar parametra nizov a in b nista enaka, lahko funkcijo raz?lenjevanja razdelimo v funkcijo za del potem in funkcijo z nasprotnim pogojem za del sicer (ali isti pogoj in le del sicer): {{ {{#ifexpr:..|a|x0}} | parametri niza a }}{{ {{#ifexpr:..|x0|b}} | parametri niza b }} namesto {{ #ifexpr:.. | {{a|parametri niza a}} | {{b |parametri niza b}} }}.
Podobno lahko v primeru povezav namesto {{ #ifexpr:.. | [[a]] | [[b]] }} uporabimo [[ {{#ifexpr:..|a|b}} ]]. Kadar dela sicer ni, lahko namesto {{ #ifexpr:.. | [[a]] }} uporabimo {{#ifexpr:..|[[ {{#ifexpr:..|a}} ]] }}. V tem primeru moramo pogoj podvojiti: zaradi notranje kopije pogoja dobimo bodisi "[[a]]" ali "[[]]"; v prvem primeru se v tabelo povezav na stran doda povezava, v drugem v tabeli povezav povezave ni. Z zunanjo kopijo pogoja se izognemo prikazu "[[]]" pri neizpolnjenem pogoju.
V primeru gnezdenih pogojnih funkcij raz?lenjevanja moramo za vsako povezavo skopirati celotno gnezdenje pogojni?kih raz?lenjevalnih funcij v oglate oklepaje povezave. Podobno lahko to storimo z zavitimi oklepaji predloge. Kadar dobimo "{{}}", to v tabelo povezav na predlogo ne umesti nobenega predmeta in se zaradi pogojni?kih raz?lenjevalnih funkcij, ki niz obdajajo, ne prika?e.
Glej tudi tolma?enje funkcije raz?lenjevanja kot predloge.
Namestitev
[uredi | uredi kodo]- Za trenutno razli?ico raz?iritve ParserFunctions mora biti name??en php5.
V novo mapo ParserFunctions v svoji mapi z raz?iritvami prenesite naslednje datoteke.
?e nimate php5, uporabite naslednje datoteke (starej?a redakcija):
Nato na konec svojega mw:Manual:LocalSettings.php dodajte:
require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );
?e se prika?e sporo?ilo o napaki, npr. "Warning: require_once(/extensions/ParserFunctions/ParserFunctions.php) [function.require-once]: failed to open stream:", vrstico zamenjajte z:
require_once( 'extensions/ParserFunctions/ParserFunctions.php' );
Brskanje po drevesu kode:
1.8 in nadaljnje razli?ice
[uredi | uredi kodo]V 1.8 in nadaljnjih razli?icah delujejo vse funkcije raz?lenjevalnika. Podprte so tudi krajevno prilagojene oblike.
1.7
[uredi | uredi kodo]V 1.7 delujejo vse funkcije raz?lenjevalnika, vendar pa samo v angle??ini. Hkratna uporaba raz?iritve m:Cite lahko povzro?i te?ave; gl. [1].
1.6
[uredi | uredi kodo]Ob vklju?itvi funkcij raz?lenjevalnika kode 1.6 se lahko prika?ejo nekatera opozorila. Te?avo popravite tako, da v ParserFunctions.php odstranite naslednjo vrstico (vrstica 10):
$wgHooks['LanguageGetMagic'][] = 'wfParserFunctionsLanguageGetMagic';
Za delovanje funkcij #time, morate v mapo extensions/ParserFunctions nalo?iti tudi SprintfDateCompat.php. Vendar te?ava ne bo resni?no re?ena.
Ve?ina funkcij raz?lenjevalnika kode (razen #if) deluje enako dobro tudi v MediaWiki 1.6, vendar pa je njihova skladnja brez znaka '#'. ?e ?elite uporabiti znak '#', poi??ite naslednji odsek raz?iritve ParserFunctions.php:
$wgParser->setFunctionHook( 'expr', array( &$wgExtParserFunctions, 'expr' ) ); $wgParser->setFunctionHook( 'if', array( &$wgExtParserFunctions, 'ifHook' ) ); $wgParser->setFunctionHook( 'ifeq', array( &$wgExtParserFunctions, 'ifeq' ) ); $wgParser->setFunctionHook( 'ifexpr', array( &$wgExtParserFunctions, 'ifexpr' ) ); $wgParser->setFunctionHook( 'switch', array( &$wgExtParserFunctions, 'switchHook' ) ); $wgParser->setFunctionHook( 'ifexist', array( &$wgExtParserFunctions, 'ifexist' ) );
Zamenjajte ga z:
$wgParser->setFunctionHook( '#expr', array( &$wgExtParserFunctions, 'expr' ) ); $wgParser->setFunctionHook( '#if', array( &$wgExtParserFunctions, 'ifHook' ) ); $wgParser->setFunctionHook( '#ifeq', array( &$wgExtParserFunctions, 'ifeq' ) ); $wgParser->setFunctionHook( '#ifexpr', array( &$wgExtParserFunctions, 'ifexpr' ) ); $wgParser->setFunctionHook( '#switch', array( &$wgExtParserFunctions, 'switchHook' ) ); $wgParser->setFunctionHook( '#ifexist', array( &$wgExtParserFunctions, 'ifexist' ) );
Preprosto nadomestilo za #if -
function ifHook( &$parser, $test = '', $then = '', $else = '' ) { if ($test !== '') {
v vrstici 57 zamenjajte z:
function ifHook( &$parser, $test = '', $then = '', $else = '' ) { if ( (string)$test !== '' ){
Vendar pa pri PHP 4.3.9 zgornji popravek domnevno ne deluje.
Glej tudi
[uredi | uredi kodo]- M:Help:Calculation
- M:Help:Magic words
- M:StringFunctions
- M:DynamicFunctions
- m:Category:Templates using ParserFunctions
- sl:Kategorija:Predloge s ParserFunctions