Wikipedija: funkcije razčlenjevalnika
![]() | Informacije o razširitvi na tej strani so morda zastarele. Za posodobljene in podrobnejše informacije si oglejte stran MediaWiki . |
Osnovni nabor funkcij razčlenjevalnika je znan kot čarobne besede . Glejte tudi mw: Pomoč: Razširitev: ParserFunctions / en in mw: Razširitev: StringFunctions . Splošna sintaksa za funkcije razčlenjevalnika je:
{{ # funkcija : argument 1 | argument 2 | argument 3 ...}}
Če želite, da je vrednost razčlenjevalnika del tabele, morate namesto vodnega znaka uporabiti nadomestne znake - {{ ! - }} , { { ! } } , {{ !! }} , - ki jih funkcije razčlenjevalnika ustrezno zaznajo, in ko stran oblikuje mehanizem MediaWiki, se razširijo v simbole, ki tvorijo tabelo - |-
, |
, ||
...
Za oblikovanje tabele lahko uporabite tudi HTML :
-
<table></table>
- podobno kot{|-
in-|}
; -
<tr>
- začne vrstico; -
<td>
- ustvari celico v vrsti ...
Funkcije
#expr
Funkcija #expr izvaja matematične izračune številk ali spremenljivk/parametrov, ki jih je mogoče pretvoriti v številke. sintaksa:
{{#expr: izraz }}
Podprti so naslednji operaterji (navedeni v približnem vrstnem redu prednosti):
Operater | Ukrep | Primer |
---|---|---|
- | {{#expr: 123456789012345}} = 1,2345678901234E + 14 {{#expr: 0,000001}} = 1,0E-6 | |
() | Operatorji združevanja | {{#expr: (30 + 7) * 7}} = 259 |
+ | Enarni znak + | {{#expr: +30 * +7}} = 210 |
- | Unarni znak - (inverzija predznaka) | {{#expr: -30 * -7}} = 210 |
ne | Unarno ali logično NE | {{#expr: ne 0 * 7}} = 7 {{#expr: ne 30 + 7}} = 7 |
* | Množenje | {{#expr: 30 * 7}} = 210 |
/ | Division, kar ustreza div | {{#expr: 30/7}} = 4,2857142857143 |
^ | Eksponentiranje | {{#expr: 3 ^ 2}} = 9 |
razdel | Deljenje, enakovredno / (brez celih delitev) | {{#expr: 30 div 7}} = 4,2857142857143 {{#expr: 5 div 2 * 2 + 5 mod 2}} = 6 |
mod | Preostanek delitve, pridobljen z deljenjem operandov, pri katerem se ulomni deli zavržejo (upoštevajte, da div in mod ne delujeta kot v običajnih programskih jezikih) | {{#expr: 30 mod 7}} = 2 {{#expr: -8 mod -3}} = -2 |
+ | Dodatek | {{#expr: 30 + 7}} = 37 |
- | Odštevanje | {{#expr: 30 - 7}} = 23 |
okrogla | Zaokroži levi operand na določeno število decimalnih mest | {{#expr: 30/7 krog 3}} = 4,286 {{#expr: 30/7 krog 0}} = 4 |
= | Enakost (številčna in logična primerjava) | {{#expr: 30 = 7}} = 0 |
<> | Neenakost, enakovredno ! = | {{#expr: 30 <> 7}} = 1 |
! = | Neenakost, enakovredna <> in logični xor | {{#expr: 1! = 0}} = 1 |
< | manj | {{#expr: 30 <7}} = 0 |
> | Več | {{#expr: 30> 7}} = 1 |
<= | Manj ali enako | {{#expr: 30 <= 7}} = 0 |
> = | Več ali enako | {{#expr: 30> = 7}} = 1 |
in | Logično IN | {{#expr: 4 <5 in 4 mod 2}} = 0 |
oz | Logično ALI | {{#expr: 4 <5 ali 4 mod 2}} = 1 |
greh | Sinus | {{#expr: sin (1,57)}} = 0,99999968293183 |
cos | kosinus | {{#expr: cos (1,57)}} = 0,00079632671073326 |
porjavelost | Tangenta | {{#expr: tan (0)}} = 0 |
To niso vsi operaterji, ki so na voljo. Podrobnejša dokumentacija o stavkih funkcij je m: Pomoč: Izračun .
Kot vedno je bolje postaviti dodatne oklepaje, kot pa se ugankati glede vrstnega reda izračuna.
Pri logičnem izpisu 0 pomeni napačno in 1 pomeni res.
Na primer:
{{#expr: (100 - 32) / 9 * 5 krog 0}}
daje: 38.
Pretvorite 100 ° Fahrenheita v Celzije, zaokroženo na najbližje celo število.
#če
Funkcija #if ("if") se uporablja za ustvarjanje konstruktov if-then-else. Njegova sintaksa je naslednja:
{{#if: testni niz | besedilo, če ni prazno | besedilo, če je prazno }}
Če je testna vrstica prazna ali je sestavljena samo iz presledkov, se besedilo vrne, če je prazno ; v nasprotnem primeru se besedilo vrne, če ni prazno . Zadnji parameter lahko izpustite, v tem primeru bo prazen niz vrnjen s praznim nizom.
Upoštevajte, da #if ne podpira primerjave z "=" in drugimi matematičnimi operacijami. Torej, {{#if: 1 = 2 | да | нет }}
bo vrnil "da", saj vrstica 1 = 2
prazna. Uporabite #ifeq za primerjavo nizov. Uporabite #ifexpr za primerjavo številk.
Vsebina za navpičnimi črtami je zaznana kot od začetka vrstice, zato znaki *
, :
, ;
in drugi na prvem mestu se pretvorijo v ustrezne elemente postavitve. Da bi se temu izognili, postavite oznako <nowiki/>
prednje ali jih zamenjajte z entitetami HTML *
, :
in ;
oz.
#ifeq
Funkcija #ifeq ("če je enako") primerja dva niza in vrne drug niz, odvisno od rezultata primerjave. Njegova sintaksa je naslednja:
{{#ifeq: niz za primerjavo 1 | niz za primerjavo 2 | besedilo, če je enako | besedilo, če ni enako }}
#ifexist
Funkcija #ifexist ("če obstaja", "če obstaja") je po sintaksi podobna #if , vendar se namesto pogoja preveri obstoj članka z navedenim naslovom. Preverjanje se izvede na način, ki razlikuje velike črke po pretvorbi preverjene glave v kanonično obliko (če je na začetku mala črka, se ta pretvori v velike). Na primer:
- {{#ifexist: Uporabnik: Js | Član je | Ni uporabnika}} vrne Uporabnik je tam, ker obstaja stran Uporabnik: Js .
- {{#ifexist: uporabnik: js | Član je | Ni uporabnika }} bo vrnil Uporabnik je tam , ker bo uporabnik: js, ko bo pretvorjen v kanonično obliko, dal Uporabnik: Js .
- {{#ifexist: Uporabnik: JS | Član je | Brez člana}} bo vrnil Ni člana, ker stran Uporabnik: JS ne obstaja.
{{#ifexist}} ne deluje z relativnimi potmi, kot je / podstran .
Za imenski prostor »Datoteka« (tudi »Datoteka«, »Slika«) je preverjena samo lokalna datoteka, ne pa tudi datoteka na Wikimedia Commons . Če želite preveriti prisotnost razpoložljive datoteke tudi na Wikimedia Commons, morate uporabiti predpono "Media:".
Primer (datoteka Example.png, naložena samo na Wikimedia Commons):
- {{#ifexist: Datoteka: Primer.png | imajo | no}} bo vrnil št
- {{#ifexist: Slika: Primer.png | imajo | no}} bo vrnil št
- {{#ifexist: Mediji: Primer.png | imajo | no}} bo vrnil da
Če je bila ustvarjena lokalna stran z opisom datoteke Wikimedia, bodo vse 3 možnosti vrnile "da".
Deluje tudi s parametri predloge.
Število klicev te funkcije na stran je omejeno. Če je presežen, stran spada v kategorijo Wikipedije : Strani s preveč klici funkcij, ki zahtevajo veliko sredstev . Število klicev funkcij na strani je treba zmanjšati.
#ifexpr
#ifexpr oceni matematični izraz in vrne enega od dveh nizov, odvisno od rezultata.
{{#ifexpr: izraz | besedilo, če je res | besedilo sicer }}
Matematična sintaksa je enaka kot #expr .
#stikalo
#switch primerja eno vrednost z mnogimi in vrne rezultat, če se najde ujemanje. Če ujemanje ni najdeno, se vrne privzeti rezultat, določen na koncu zapisa (mora biti zadnji). Prisotnost tega rezultata je neobvezna in če manjka in se ujema, se ne vrne nič.
{{#switch: vrednost za primerjavo | vrednost 1 = rezultat 1 | vrednost 2 = rezultat 2 | ... | vrednost n = rezultat n | privzeti rezultat }}
Če bi moralo imeti več vrednosti enak rezultat, se lahko zapis skrajša:
{{#switch: vrednost za primerjavo | vrednost 1a | vrednost 1b | ... | vrednost 1x = rezultat 1 | vrednost 2a | vrednost 2b | ... | vrednost 2y = rezultat 2 | ... | vrednost Na | vrednost Nb | ... | Vrednost Nz = N rezultat | privzeti rezultat }}
#switch lahko uporabite namesto enega ali več #ifeqs :
- {{#switch: a | a = res | false}} daje true
- {{#ifeq: a | a | res | false}} daje true
Če primerjana vrednost ali vrednosti vsebujejo znak enakosti ( = ), #switch ne bo mogel pravilno primerjati te vrednosti in vrednosti. Če želite to narediti, morate v vrednostih (vendar ne nujno v primerjalni vrednosti) uporabiti vzorec { { = } } , ki vsebuje znak enakosti ali kodo =
:
- {{#stikalo: 1 = 2
- | 1 = 2 = surov
- | 1 <nowiki> = </nowiki> 2 = nowiki
- | 1 & # 61; 2 = html
- | 1 {{=}} 2 = predloga
- | privzeto
- }} → html
Če privzeti rezultat vsebuje znake "=", lahko pred njim napišete #default =
.
#čas
#time je funkcija, ki vam omogoča prikaz časa in datuma v določeni obliki. sintaksa:
{{#time: format }} {{#čas: format | čas }} {{#čas: format | čas | jezik }}
Parameter časa ima datum v obliki llll-mm-hh , kjer je llll leto, mm je številka meseca in hh dan v mesecu. Če parameter ni podan, se uporabita trenutni čas in datum.
Jezikovni parameter sprejema kodo jezika ISO 639 -1. Če parameter ni določen, sta ura in datum prikazana v ruščini.
Zaradi predpomnjenja lahko pride do razlike med realnim časom in prikazanim. Če želite ročno osvežiti, shranite stran brez kakršnih koli sprememb ali pojdite na http://en.wikipedia.org/wiki/ Ime_stranice ? Action = purge (za več podrobnosti glejte Wikipedia: Cache # Purge/refresh server cache ).
Parameter formata je podoben tistemu, ki se uporablja v PHP-jevi funkciji datum () :
Simbol | Opis | Primer | trenutna vrednost |
---|---|---|---|
d | Dan v mesecu z ničlo | 04 | 08 |
D | Kratko ime dneva v tednu | pon | sre |
j | Dan v mesecu brez nič | 4 | osem |
l | Polno ime dneva v tednu | ponedeljek | sreda |
N | Številka dneva v tednu ISO 8601 | 1 (ponedeljek) - 7 (nedelja) | 3 |
w | Številka dneva v tednu | 0 (nedelja) - 6 (sobota) | 3 |
z | Dan v letu (začetek ob 0) | 0—365 | 250 |
W | Številka tedna ISO 8601 | 36 | |
F | Polno ime meseca v imenskem primeru | januarja | septembra |
xg | Rodniško polno ime meseca | januarja | september |
m | Številka meseca z ničlo | 01-12 | 09 |
M | Kratko ime meseca | sep | sep |
n | Številka meseca brez nič | 1-12 | 9 |
t | Število dni v mesecu | 28-31 | trideset |
L | Preverjanje, ali je leto prestopno | 1, če je leto prestopno, sicer 0 | 0 |
Y | Letnik s 4 številkami | 2006 | 2021 |
y | Letnik z 2 števki | 06 | 21 |
a | zjutraj ali zvečer | am | |
A | AM ali PM | AM | |
g | 12-urni format brez 0 | 1-12 | 12 |
G | 24-urni format brez 0 | 0-23 | 0 |
h | 12-urni format od 0 | 01-12 | 12 |
H | 24-urni format c 0 | 00-23 | 00 |
jaz | Minuta z ničlo | 00-59 | osemnajst |
s | Drugi z ničlo | 00-59 | 23 |
c | ISO 8601 | 2021-09-08T00: 18:23 + 00:00 | |
r | RFC 2822 | Sreda, 8. september 2021 00:18:23 +0000 | |
U | čas UNIX | 1631060303 |
Razširitev sintakse PHP:
Simbol | Opis |
---|---|
xn | Izpiše naslednjo številsko kodo v številko ASCII. Na primer, v hindijščini bo {{#time: “H, xnH”}} natisnil “०६, 06”. |
xr | Izpiše naslednjo številsko kodo z rimskimi številkami (samo za številke <3000). Na primer, {{#time: “Y, xrY”}} bo izpisalo “2021, MMXXI”. |
xx | črka "x" |
Vsi drugi znaki bodo prikazani nespremenjeni.
- Fraza, zaprta v dvojnih narekovajih, bo izšla brez sprememb ali narekovajev. Nezaprti narekovaji se štejejo za znake.
- {{#time: "Danes" l}} → Danes je sreda
- {{#time: jaz sem "}} → 18'23"
- Poševnica nazaj deluje enako kot v funkciji PHP date () . \ H natisne H , \ " natisne " [za pojasnitev ] .
Oblika parametra časa je enaka tisti, ki se uporablja v funkciji PHP strtotime () . To so lahko absolutni in relativni datumi, na primer "11. december" [t 1] in/ali "+10 ur", ki se lahko uporabijo za prevajanje časovnih pasov. Če morate pretvoriti časovni žig UNIX v datum, pred njim postavite @ .
- {{#čas: j xg Y | -14 dni}} → 25. avgust 2021 (pred 14 dnevi)
- {{#čas: H: i | +4 ure}} → 04:18 (UTC + 4)
- {{#čas: H: i | 8:15 +6 ur}} → 14:15
- {{#čas: r | @ 1483057398}} → pet, 30. december 2016 00:23:18 +0000
rimske številke
- {{#čas: xrU | 1970-1-1 + 61 sekund}} → LXI
- {{#čas: xrU | @ 62}} → LXII
Opombe (uredi)
- ↑ Ruski datumi, kot je "11. december", trenutno ne delujejo, če jih res morate obdelati, poskusite predlogo {{ Date Converter }} .
# rel2abs
Funkcija # rel2abs pretvori relativno pot povezave v absolutno.
{{# rel2abs: pot }} {{# rel2abs: pot | osnovna pot }}
Relativna pot se razume kot tista, ki se začne z znaki /
, ./
ali ../
, pa tudi s potmi ..
in .
-
.
- trenutna raven -
..
- "pomakni se za eno stopnjo navzgor" -
/foo
- "pojdi eno raven navzdol v podimenik" foo ""
Če osnovna pot ni podana, bo uporabljena trenutna pot .
-
{{#rel2abs: ../baz | Обсуждение:Foo/bar }}
→ Razprava: Foo / baz - Če pokličete
{{#rel2abs: ../baz }}
na strani »Razprava: Foo / bar«, je rezultat »Razprava: Foo / baz«. - Če na strani »Talk: Foo« pokličete
{{#rel2abs: ../baz }}
, je rezultat »baz«. - Če na strani »Talk: Foo« pokličete
{{#rel2abs: ../../baz }}
, je rezultat » Napaka: napačna globina poti:« Razprava: Foo /../../ baz « (poskus dostopa do vozlišča, ki je višje od korena) ".
Da se izognete preverjanju, ali želena pot obstaja, lahko uporabite to funkcijo v kombinaciji z #ifexist
:
-
{{#ifexist: {{#rel2abs: .. }} | «..» существует | «..» не существует }}
Če pot, posredovana funkciji kot parameter, ni identificirana kot relativna pot, jo bo funkcija vrnila kot rezultat. Na primer:
-
{{#rel2abs: Help:Help }}
vrne "Help: Help".
#naslovni deli
Funkcija #titleparts vrne podniz pred želeno poševnico. Glavni cilj je pridobiti strani vseh nivojev, za katere je to podstran.
{{#titleparts: naslov strani | število segmentov | začenši s (privzeto 1) }}
V primeru, ko je število segmentov enako nič, večje od števila ravni članka ali ga ni mogoče pretvoriti v številko, se vrne celoten naslov strani (ali od segmenta od do konca, če je določeno) . Opomba: Kadar koli se vrne prvi segment niza, se začne z veliko začetnico.
-
{{#titleparts: Обсуждение:Foo/bar/baz/quok }}
→ Razprava: Foo / bar / baz / quok -
{{#titleparts: Обсуждение:Foo /bar/baz/quok | 1 }}
→ Razprava: Foo Glej tudi {{ ROOTPAGENAME }} . -
{{#titleparts: Обсуждение:Foo/bar /baz/quok | 2 }}
→ Razprava: Foo / bar -
{{#titleparts: Обсуждение:Foo/ bar/baz /quok | 2 | 2 }}
→ vrstica / baza -
{{#titleparts: Обсуждение:Foo/ bar/baz/quok | | 2 }}
→ bar / baz / quok
Določite lahko negativne vrednosti parametrov: za število segmentov to pomeni izključitev iz rezultata števila segmentov zadnjih delov (vseh, če jih je več od njihovega števila), saj začetek z njim pomeni začetek izhod iz - začenši s segmenta na desni.
-
{{#titleparts: Обсуждение:Foo/bar/baz /quok | -1 }}
→ Razprava: Foo / bar / baz Izpustite en segment s konca vrstice. Glejte tudi {{ BASEPAGENAME }} . -
{{#titleparts: Обсуждение:Foo/bar/baz/quok | -4 }}
→ Izpustite vse 4 segmente s konca vrstice. -
{{#titleparts: Обсуждение:Foo/bar/baz/quok | -5 }}
→ Izpustite 5 segmentov s konca vrstice (več kot obstaja). -
{{#titleparts: Обсуждение:Foo/bar/baz/ quok | | -1 }}
→ quok Vrne zadnji segment. Glejte tudi {{ PODPAGENAME }} . -
{{#titleparts: Обсуждение:Foo/ bar/baz /quok | -1 | 2 }}
→ bar / baz Izpustite zadnji segment s konca vrstice in vrnite drugi in naslednji segment. -
{{#titleparts: Обсуждение:Foo/bar/ baz /quok | -1 | -2 }}
→ baz Začne kopirati iz drugega segmenta na koncu vrstice in izpusti en segment s konca vrstice.
- Če ste na strani "Član: Foo / bar", pokličite
{{#titleparts: {{FULLPAGENAME}} | 1 }}
, bo rezultat "Član: Foo". - Če ste na strani "Član: Foo / bar", pokličite
{{#titleparts: {{PAGENAME}} | 1 }}
, rezultat bo "Foo".
Nizi, daljši od 255 znakov, se vedno vrnejo kot posredovani.
#iferror
{{#iferror: izraz | napaka | ok }}
Vrne napako, če izraz vsebuje niz <strong class = "error"> , ki ga generirajo funkcije #expr , #ifexpr , #time , # rel2abs in v nekaterih drugih situacijah v MediaWiki (kot je globoka rekurzija). To je najprimernejši način za ulov neveljavnega vnosa, ki ga je treba posredovati drugi funkciji razčlenjevalnika. Na primer:
- {{#iferror: {{#expr: 1 + 1}} | napačen vnos | pravilen izraz}} → pravilen izraz
- {{#iferror: {{#expr: 1 + Z}} | napačen vnos | pravilen izraz}} → neveljaven vnos
Zadnja dva parametra sta neobvezna. Če je parameter uspešno izpuščen, bo ob uspehu vrnjen izraz . Če je tudi parameter napake izpuščen, se v primeru napake ne bo izpisalo nič, v primeru uspeha pa bo vrnjen izraz .
- {{#iferror: {{#expr: 1 + 1}} | neveljaven vnos}} → 2
- {{#iferror: {{#expr: 1 + Z}} | neveljaven vnos}} → neveljaven vnos
- {{#iferror: {{#expr: 1 + 1}}}} → 2
- {{#iferror: {{#expr: 1 + Z}}}} →
V to smer:
- {{#iferror: wikitext | alternativa }} pomeni "prikaži wikibesedilo, če je pravilno, drugače pa alternativo ".
- {{#iferror: wikitext }} pomeni "prikaži wikitext, če je pravilno."
- Opomba: Ta funkcija nadomešča napako v starem predprocesorju, ki je omogočala uporabo #switch za lovljenje napak v izrazih.
Glej tudi: r29774 , r29775 , r29877 .
#prvi
Če želite del strani z imenom strani vključiti v drugo, vam mehanizem vključevanja ločenih razdelkov omogoča večjo prilagodljivost pri vključevanju vsebine nekaterih strani v druge kot popolno vključitev strani z uporabo {{: pagename}} in < noinclude >
. Na strani, katere vsebina je načrtovana za vključitev v drugo, je začetek razdelka označen z < section begin= label />
, konec razdelka pa z < section end= label />
. Na strani, kjer je razdelek vključen {{#lst: ime strani | oznaka}} .
Ta mehanizem vam omogoča, da označite več razdelkov na vključeni strani in se lahko prekrivajo.
Poglej tudi
- Wikipedia: mehanizem za predloge
- Wikipedia: Predloge / Delo z nizi
- Wikipedija: spremenljivke
- mw: Pomoč: Razširitev: ParserFunctions (. angleščina) - Domov, kjer je bil prenesen na besedilo
- mw: Pomoč: Magic_words / ru
Zgodovina namestitve razširitve
Razširitev je napisal Tim Starling in jo je aprila 2006 namestil v vse Wikimedijine projekte.