Wikisage, de vrije encyclopedie van de tweede generatie, is digitaal erfgoed

Wikisage is op 1 na de grootste internet-encyclopedie in het Nederlands. Iedereen kan de hier verzamelde kennis gratis gebruiken, zonder storende advertenties. De Koninklijke Bibliotheek van Nederland heeft Wikisage in 2018 aangemerkt als digitaal erfgoed.

  • Wilt u meehelpen om Wikisage te laten groeien? Maak dan een account aan. U bent van harte welkom. Zie: Portaal:Gebruikers.
  • Bent u blij met Wikisage, of wilt u juist meer? Dan stellen we een bescheiden donatie om de kosten te bestrijden zeer op prijs. Zie: Portaal:Donaties.
rel=nofollow

Hulp:Parserfuncties

Uit Wikisage
Naar navigatie springen Naar zoeken springen
Overzicht beheerpagina's
Waarschuwing De aard van parserfuncties heeft tot gevolg dat ze voornamelijk in sjablonen gebruikt worden.
Gebruik van parserfuncties in artikelen kan wel maar is vaak niet zinvol.

Een parserfunctie bewerkstelligt net als een sjabloon een resultaat dat kan variëren afhankelijk van parameters. Het verschil is dat de werking van een parserfunctie in de software is vastgelegd, terwijl die van een sjabloon wordt bepaald door een pagina die net als andere pagina's door gebruikers bewerkt kan worden. Parserfuncties worden vaak gebruikt in een sjabloon, waarbij parameters van het sjabloon worden doorgegeven aan de parserfunctie; bij een sjabloonparameter voor een datum kan een parserfunctie bijvoorbeeld de voorafgaande datum bepalen. Sommige parserfuncties zijn onderdeel van MediaWiki zelf, en sommige van de MediaWiki-extensie ParserFunctions. Ze hebben in het algemeen de volgende opbouw:

{{#functienaam: <argument 1> | <argument 2> | <argument 3> }}

Binnen de argumenten van de meeste parserfunctie moet eigenlijk altijd minstens een variabele parameter voorkomen. Het is mogelijk om

{{#expr:3+5}} 

te schrijven, maar erg zinvol is dat meestal niet: je kunt net zo goed 8 schrijven (uitzonderingen daargelaten). Het gevolg is dat parserfuncties vrijwel uitsluitend in sjablonen voorkomen.

Een voorbeeld van een uitzondering is als het resultaat van een parserfunctie van andere factoren afhankelijk is:

Volgend jaar is {{#expr:1+{{#time:Y}}}} (resulteert in: Volgend jaar is 2025).

Gaat het om een ingewikkelde functie die je niet zelf kunt of wilt uitrekenen, dan kun je subst gebruiken, bijvoorbeeld:

{{subst:#expr: (5*5+12*12)^0.5}}

Op deze manier wordt tijdens het opslaan van de pagina de berekening uitgevoerd en vervolgens wordt niet de functie maar het resultaat opgeslagen.

Functies

Expr

De expr functie evalueert rekenkundige uitdrukkingen. De ondersteunde bewerkingen (ongeveer in volgorde van voorrang) zijn:

Functies
Teken Bewerking Voorbeeld
^ Machtsverheffen {{#expr: 30 ^ 7}} = 2.187E+10
* Vermenigvuldiging {{#expr: 30 * 7}} = 210
/ of div Deling {{#expr: 30 / 7}} = 4.2857142857143
+ Optelling {{#expr: 30 + 7}} = 37
- Aftrekking (or negatie) {{#expr: 30 - 7}} = 23
mod Modulo, levert de rest na deling {{#expr: 30 mod 7}} = 2
round Rondt een getal (omhoog of omlaag) af op het aangegeven aantal cijfers na het decimaalteken, rechts ingegeven {{#expr: 30.7 round 0}} = 31
{{#expr: 30 / 7 round 7}} = 4.2857143
= Gelijkheid {{#expr: 30 = 7}} = 0
<> of != Ongelijkheid {{#expr: 30 <> 7}} = 1
< Kleiner dan {{#expr: 30 < 7}} = 0
> Groter dan {{#expr: 30 > 7}} = 1
<= Kleiner dan of gelijk aan {{#expr: 30 <= 7}} = 0
>= Groter dan of gelijk aan {{#expr: 30 >= 7}} = 1
and Logische EN {{#expr: 30 and 7}} = 1
or Logische OF {{#expr: 30 or 7}} = 1
not Logische NIET {{#expr: not 7}} = 0
( ) Groeperingstekens {{#expr: (30 + 7) * 2 }} = 74
Goniometrische functies (voorbeelden voor een hoek van 60º)
sin geeft de sinus van een hoek (uitgedrukt in radialen) {{#expr:sin((2*pi)/6)}} = 0.86602540378444
cos geeft de cosinus van een hoek (uitgedrukt in radialen) {{#expr:cos((2*pi)/6)}} = 0.5
tan geeft de tangens van een hoek (uitgedrukt in radialen) {{#expr:tan((2*pi)/6)}} = 1.7320508075689
asin geeft de hoek in radialen, berekend uit de sinus van die hoek
acos geeft de hoek in radialen, berekend uit de cosinus van die hoek
atan geeft de hoek in radialen, berekend uit de tangens van die hoek
 
exp Exponentiële functie, exp(x) of ex, een functie van de exponent en wel met het grondtal van de natuurlijke logaritme {{#expr:exp(5)}} = 148.41315910258
ln Natuurlijke logaritme van een getal {{#expr:ln(2)}} = 0.69314718055995
abs Absolute waarde: negatieve getallen worden omgevormd tot positieve {{#expr:abs(-4)}} = 4
ceil afronden naar het eerstvolgende grotere gehele getal {{#expr:ceil(5.4)}} = 6
{{#expr:ceil(-5.4)}} = -5
floor afronden naar het eerstvolgende kleinere gehele getal {{#expr:floor(5.4)}} = 5
{{#expr:floor(-5.4)}} = -6
trunc afronden op geheel getal door decimalen te verwaarlozen {{#expr:trunc(5.4)}} = 5
{{#expr:trunc(-5.4)}} = -5
Constanten
e Geeft e {{#expr:e}} = 2.718281828459
pi pi, verhouding tussen de omtrek en de middellijn van een cirkel {{#expr:pi}} = 3.1415926535898
  • De "logische" bewerkingen beschouwen 0 als onwaar en ieder ander getal als waar.
  • Getallen hebben een punt als decimaalteken.
  • Getallen kunnen vermenigvuldigd worden met een macht van 10 met behulp van de letter E. Bijvoorbeeld 5E3 betekent 5 ∙ 103 (dus 5 000) en 2.97E-6 betekent 2.97 ∙ 10−6 (dus 0.000 002 97).

Voorbeeld:

{{#expr: (100 - 32) / 9 * 5 round 0 }} geeft 38

wat neerkomt op 100°F omgerekend in °C, afgerond op het dichtstbijzijnde gehele getal.

If

De if functie is een als-dan-anders constructie. De opbouw is:

{{ #if: <condition> | <then text> | <else text> }}

Als de conditie een lege tekenreeks of slechts witruimte oplevert dan merken we deze aan als onwaar, en geeft de else text terug. Anders is de uitkomst de then text.

De else text hoeft er niet te zijn. In dat geval is de uitvraging blanco wanneer de conditie onwaar is.
Als de then text ontbreekt is de uitvraging blanco wanneer de conditie waar is.

Een illustratie:

                      {{Template|parameter=something}}  {{Template}} {{Template|parameter=}}
                                     |                        |                |
                                     |                        |                |
                                     |                        |                |
{{ #if: {{{parameter|}}} | Parameter is defined. | Parameter is undefined, or empty }}

Merk op dat de if functie de not noch de "=" tekens en evenmin rekenkundige uitdrukkingen ondersteunt. {{#if: 1 = 2|ja|nee}} levert als resultaat "ja" want de tekenreeks "1 = 2" is niet blanco. De bedoeling is een "als gedefinieerd" constructie. Voor het vergelijken van tekenreeksen dient de ifeq. Voor het vergelijken van getallen de ifexpr.

IfEq

ifeq vergelijkt twee tekenreeksen en retourneert een andere tekenreeks afhankelijk van het resultaat van de vergelijking. Deze is als volgt opgebouwd:

{{ #ifeq: <comparison text 1> | <comparison text 2> | <equal text> | <not equal text> }}

IfError

Kijkt of een opgegeven expressie of formule geldig is, en geeft een bepaalde uitvoer naargelang de expressie al dan niet geldig is.

Parameters:

  • Expressie - de te evalueren expressie of formule
  • Fouttekst - waarde of tekst die teruggegeven wordt wanneer een expressie ongeldig is
    • bij verstek is het resultaat een lege string
  • Succestekst - waarde of tekst die teruggegeven wordt wanneer een expressie geldig is
    • wanneer geen "succestekst" ingegeven werd, is de uitvoer het resultaat van de expressie

Syntax:

{{#IfError:<Expressie> | [<Fouttekst>] | [<Succestekst>] }}

Voorbeelden:

Code Resultaat Toelichting
{{#IfError:{{#Expr:2+3}} | Fout | Goed}} Goed #Expr:2+3 is geldig
{{#IfError:{{#Expr:2+X}} | Fout | Goed }} Fout #Expr:2+X is ongeldig (optellen van een cijfer en een letter is niet mogelijk)
{{#IfError:{{#Expr:2+3}} }} 5 #Expr:2+3 is geldig, de expressie wordt uitgevoerd, het resultaat is 5
{{#IfError:{{#Expr:2+3}} | Fout }} 5 #Expr:2+3 is geldig, de expressie wordt uitgevoerd, het resultaat is 5
{{#IfError:{{#Expr:2+X}} | Fout }} Fout #Expr:2+X is ongeldig, het resultaat is "Fout"
{{#IfError:{{#Expr:2+X}} }} #Expr:2+X is ongeldig, het resultaat is een lege string (!)

IfExist

ifexist geeft een van twee mogelijke waarden, afhankelijk van het bestaan van een lemma.

{{ #ifexist: <lemma> | <dan deze tekst> | <anders deze tekst> }}

Argumenten:

  1. naam van de gevraagde pagina
  2. tekst of waarde indien de pagina bestaat
  3. tekst of waarde indien de pagina niet bestaat

Nota bene:

  • De functie is hoofdlettergevoelig v.w.b. alle tekens behalve het eerste.
  • Om deze parserfunctie te kunnen evalueren moet het systeem de encyclopedie onderzoeken. Daardoor is de verwerking van deze parserfunctie veel bewerkelijker dan de andere. Deze parserfunctie mag maximaal 500 keer in een lemma voorkomen (inclusief sjablonen).

Voorbeelden:

{{#ifexist: Amsterdam | ja | nee }} = ja
{{#ifexist: amsterdam | ja | nee }} = ja (de eerste letter is niet hoofdlettergevoelig)
{{#ifexist: AmSterDam | ja | nee }} = nee (alle andere letters zijn wél hoofdlettergevoelig !)
{{#ifexist: m:NL_Help:Inleiding | ja | nee }} = nee (de functie werkt niet voor pagina's buiten de lokale wiki. De interwiki prefix wordt geïnterpreteerd als deel van de titel. Omdat een dergelijke pagina niet kan bestaan, zegt het dus nee, ook wanneer de pagina op die andere wiki wél bestaat)

IfExpr

ifexpr evalueert een rekenkundige bewerking en geeft een van twee tekenreeksen als uitkomst.

{{ #ifexpr: <expression> | <then text> | <else text> }}

In het geval van nul als uitkomst dan resulteert de else text zo niet de then text. Uitdrukkingsopbouw is analoog aan expr.

Rel2Abs

Converteert een relatief path naar een absoluut path. Een relatief path kan beginnen met "/", "./" of "../", of bestaan uit "." of "..".

Parameters:

  • Relatief path
  • Base path (optioneel)

Syntax:

{{#rel2abs: <relatief path> }}
of
{{#rel2abs: <relatief path> | <base path> }}

Wanneer toegepast op deze pagina geeft [[{{#rel2abs:/Sub 1}}]] als resultaat Hulp:Parserfuncties/Sub 1, dus de complete titel van de subpagina "/Sub 1".

Bij gebruik op een subpagina (die dus al een "/" in de titel heeft) kan met {{#rel2abs:../Sub 2}} de titel van een subpagina "/Sub 2" op hetzelfde niveau opgevraagd worden, of met {{#rel2abs:..}} de titel van de pagina op één niveau hoger.

Door ook de tweede parameter (base path) in te vullen kan van een andere pagina de titel van de gewenste subpagina opgevraagd worden, b.v. [[{{#rel2abs:/Toepassingen|Bose-Einsteincondensatie}}]] geeft Bose-Einsteincondensatie/Toepassingen.

Switch

switch vergelijkt een waarde (bijvoorbeeld "x" met meerdere andere waarden (bijvoorbeeld "a", "b", "c", "1", "voorbeeld", enz.) en geeft een tekenreeks wanneer de vergeleken waarden gelijk zijn. De opbouw is:

 {{ #switch: <vergelijkingswaarde>
 | <waarde¹>=<uitkomst¹>
 | <waarde²>=<uitkomst²>
 | ...
 | <waarden>=<uitkomstn> 
 | <verstekuitkomst>
 }}

switch loopt elke waarde af totdat deze gelijkheid vindt met de vergelijkingswaarde. Vindt het die, dan is de bij die waarde horende uitkomst het resultaat (de tekenreeks na het gelijkheidsteken (=)). Vindt het die niet, en de laatste optie bevat geen gelijkheidsteken, dan resulteert de verstekuitkomst.

Merk op dat het mogelijk is waarden te laten "doorlopen" (ter reducering van de noodzaak voor dubbele uitkomsten). Bijvoorbeeld:

 {{ #switch: <vergelijkingswaarde>
 | <waarde¹>
 | <waarde²>
 | <waarde³>=<uitkomst¹>
 | ...
 | <waarden>=<uitkomstn> 
 | <verstekuitkomst>
 }}

De bijzonderheid is dat waarde¹ en waarde² geen gelijkheidsteken bevatten. Als gelijkheid optreedt bij waarde¹, waarde² of waarde³ dan resulteert de bij waarde³ genoemde uitkomst (uitkomst¹).

Time

time geeft tijd en datum (vanaf het jaar 0 tot 9999) in diverse formaten, gebaseerd op UTC. Tevens kunnen er berekeningen mee worden uitgevoerd.

Syntax:

{{ #time: <format> }}
{{ #time: <format> | <tijd> }}
{{ #time: <format> | <tijd> +/- verschil }}

De parameter "format" (verplicht) bepaalt het uitvoerformaat, met "tijd" (optioneel) wordt een berekening uitgevoerd. Wanneer geen "tijd" is gespecificeerd, wordt de datum en/of tijd getoond op het moment dat de pagina gerenderd werd. Door caching kan het voorkomen dat de getoonde tijd tot een week (!) later niet aangepast wordt. Verversen kan worden geforceerd door ?action=purge toe te voegen aan de URL van de pagina.

De parameter "format" is een tekenreeks, waarvan de syntax overeenkomt met die van PHP's date.

Code Beschrijving Voorbeeld output Actuele output
Jaar:
Y het jaar in 4 cijfers 2006 2024
y het jaar in 2 cijfers 06 24
Maand:
n Het nummer van de maand in 1 of 2 cijfers 9 2
m Het nummer van de maand in 2 cijfers 09 02
M naam van de maand, afgekort sep feb
F naam van de maand, volledig september februari
Week:
W weeknummer volgens ISO 8601 in 2 cijfers 36 08
Dag:
j datum in 1 of 2 cijfer(s) 10 23
d datum in 2 cijfer(s) 10 23
z dag van het jaar, beginnend met 0 (nul) 252 53
D naam van de dag, afgekort zo vr
l naam van de dag. Let op: een kleine letter "L", geen hoofdletter "i". zondag vrijdag
N dagnummer volgens ISO 8601 (maandag = 1; zondag = 7) 7 5
w dagnummer (zondag = 0; zaterdag = 6) 0 5
Uur:
a am (voor 12:00 's middags) of pm (na 12:00 's middags) am pm
A idem, in hoofdletters AM PM
g uren in 12-uurs formaat, 1 of 2 cijfers 7 4
h uren in 12-uurs formaat, 2 cijfers 07 04
G uren in 24-uurs formaat, 1 of 2 cijfers 7 16
H uren in 24-uurs formaat, 2 cijfers 07 16
Minuten en seconden:
i minuten, 2 cijfers 09 34
s seconden, 2 cijfers 03 09
U seconden verstreken sinds 1 januari 1970, 00:00:00 GMT (Unix Epoch) 1157872143 1708706049
Diversen:
L schrikkeljaar (1: ja; 0: nee) 0 1
t aantal dagen in de maand 30 29
c datum in ISO 8601 formaat; vaste lengte, met voorloopnullen 2006-09-10T07:09:03+00:00 2024-02-23T16:34:09+00:00
r datum in RFC 2822 formaat; variabele lengte, zonder voorloopnullen Sun, 10 Sep 2006 07:09:03 +0000 Fri, 23 Feb 2024 16:34:09 +0000
  • Voorbeelden gesubstitueerd op basis van 2006-09-10 07:09:03

Het is mogelijk met een tijd te rekenen. Voorbeelden:

{{ #time: d-m-Y | 02-11-2010 +12 days}} geeft 14-11-2010
{{ #time: H:i | + 3 hours}} geeft 19:34

Het verschil kan in de volgende eenheden opgegeven worden: year(s), month(s), day(s), hour(s), minute(s) en second(s).

TitleParts

Geeft een gewenst aantal segmenten van de opgegeven paginatitel, gescheiden door schuine strepen.

Parameters:

  • Titel - titel van de paginatitel waarvan een deel moet worden weergegeven
  • Aantal - het gewenste aantal segmenten
    • verstekwaarde is 0 (nul)
    • 0 (nul) geeft alle segmenten
    • een negatieve waarde laat de telling in omgekeerde richting verlopen
  • Begin - te beginnen bij het ne segment
    • verstekwaarde is 1, dwz. dat bij het eerste segment wordt begonnen
    • een negatieve waarde laat de telling van rechts naar links verlopen

Syntax:

{{#TitleParts:<Titel> | [<Aantal>] | [<Begin>] }}

Voorbeelden:

Code Resultaat Toelichting
{{#TitleParts:Hoofdpagina/In het nieuws/Afbeelding|1}} Hoofdpagina 1 segment
{{#TitleParts:Hoofdpagina/In het nieuws/Afbeelding|2}} Hoofdpagina/In het nieuws 2 segmenten, te beginnen bij het eerste
{{#TitleParts:Hoofdpagina/In het nieuws/Afbeelding|2|2}} In het nieuws/Afbeelding 2 segmenten, te beginnen bij het tweede
  • N.B.: De gebruike titels zijn fictief.

Andere hulppagina's

Pagina's met informatie over sjablonen, parserfuncties en magic words:

Externe links