Help:Parserfuncties
Uit Wikipedia, de vrije encyclopedie
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> }}
Inhoud |
[bewerk] Functies
[bewerk] 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.28571428571 + 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.866025403784 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.73205080757 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 ln Natuurlijke logaritme van een getal {{#Expr:ln(2)}} = 0.69314718056 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)}} = -5floor afronden naar het eerstvolgende kleinere gehele getal {{#Expr:floor(5.4)}} = 5
{{#Expr:floor(-5.4)}} = -6trunc afronden op geheel getal door decimalen te verwaarlozen {{#Expr:Trunc(5.4)}} = 5
{{#Expr:Trunc(-5.4)}} = -5Constanten e Geeft e {{#expr:e}} = 2.71828182846 pi pi, verhouding tussen de omtrek en de middellijn van een cirkel {{#expr:pi}} = 3.14159265359
- De "logische" bewerkingen beschouwen 0 als onwaar en ieder ander getal als waar.
- Getallen hebben "." als decimaalteken.
- Geen ondersteuning van FORTRAN-achtige wetenschappelijke notatie.
Voorbeeld:
{{ #expr: (100 - 32) / 9 * 5 round 0 }} geeft 38
wat neerkomt op 100°F omgerekend in °C, afgerond op het dichtstbijzijnde gehele getal.
[bewerk] 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.
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.
[bewerk] 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> }}
[bewerk] IfError
Geeft een response naar keuze, afhankelijk van de geldigheid van de opgegeven expressie, of voert de expressie uit indien deze geldig is.
Parameters:
- Expressie - de te evalueren expressie of formule
- Fouttekst - waarde of tekst die teruggegeven wordt igv. een ongeldige expressie
- bij verstek is het resultaat een lege string
- Succestekst - waarde of tekst die teruggegeven wordt igv. een geldige expressie
- bij verstek wordt de expressie geëvalueerd, en diens resultaat teruggegeven
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 (!) |
[bewerk] IfExist
ifexist geeft een van twee mogelijke waarden, afhankelijk van het bestaan van een lemma.
{{ #ifexist: <lemma> | <then text> | <else text> }}
Argumenten:
- naam van de gevraagde pagina
- tekst of waarde indien de pagina bestaat
- tekst of waarde indien de pagina niet bestaat
N.B.: De functie is case-sensitive v.w.b. alle tekens behalve het eerste.
Voorbeelden:
| {{#ifexist: Amsterdam | ja | nee }} | = ja | |
| {{#ifexist: amsterdam | ja | nee }} | = ja | (de eerste letter is niet case-sensitive) |
| {{#ifexist: AmSterDam | ja | nee }} | = nee | (alle andere letters zijn wél case-sensitive !) |
| {{#ifexist: m:Help:Calculation | ja | nee }} | = nee | (de functie werkt niet voor pagina's met een interwiki prefix, hoewel de pagina in kwestie wél bestaat) |
[bewerk] 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.
[bewerk] 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 Help: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.
[bewerk] Switch
switch vergelijkt een enkele waarde met meerdere andere en geeft een tekenreeks terug als gelijkheid optreedt. In beginsel is de opbouw:
{{ #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¹).
[bewerk] Time
time geeft tijd en datum (vanaf 1 januari 1970 !) in diverse formaten, gebaseerd op UTC. Tevens kunnen er berekeningen mee worden uitgevoerd.
Syntax:
{{ #time: <format> }}{{ #time: <format> | <tijd> }}
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 | b.v. 2006 | 2008 |
| y | het jaar in 2 cijfers | 00 tot 99 | 08 |
| Maand: | |||
| n | Het nummer van de maand in 1 of 2 cijfers | 1 tot 12 | 5 |
| m | Het nummer van de maand in 2 cijfers | 01 tot 12 | 05 |
| M | naam van de maand, afgekort | jan, feb, etc. | mei |
| F | naam van de maand, volledig | januari, februari, etc. | mei |
| Week: | |||
| W | weeknummer volgens ISO 8601 in 2 cijfers | 01 tot 52 (of 53) | 21 |
| Dag: | |||
| j | datum in 1 of 2 cijfer(s) | 1 tot 31 | 22 |
| d | datum in 2 cijfer(s) | 01 tot 31 | 22 |
| z | dag van het jaar, beginnend met 0 (nul) | 0 tot 364, of 365 in een schrikkeljaar | 142 |
| D | naam van de dag, afgekort | maa, din, etc. | do |
| l | naam van de dag | maandag, dinsdag, etc. | donderdag |
| N | dagnummer volgens ISO 8601 | 1 t/m 7, voor ma t/m zo | 4 |
| w | dagnummer, Amerikaans | 0 t/m 6 , voor zo t/m za | 4 |
| Uur: | |||
| a | am (voor 12:00u.) of pm (na 12:00u.) | am of pm | pm |
| A | idem, in hoofdletters | AM of PM | PM |
| g | uren in 12-uurs formaat, 1 of 2 cijfers | 1 t/m 12 | 8 |
| h | uren in 12-uurs formaat, 2 cijfers | 01 t/m 12 | 08 |
| G | uren in 24-uurs formaat, 1 of 2 cijfers | 0 t/m 23 | 20 |
| H | uren in 24-uurs formaat, 2 cijfers | 00 t/m 23 | 20 |
| Minuten en seconden: | |||
| i | minuten, 2 cijfers | 00 t/t 59 | 58 |
| s | seconden, 2 cijfers | 00 t/m 59 | 52 |
| U | seconden verstreken sinds 1 januari 1970, 00:00:00 GMT. | 0 tot heel veel ;-) | 1211489932 |
| Diversen: | |||
| L | schrikkeljaar | 1 (schrikkeljaar) of 0 (gewoon jaar) | 1 |
| t | aantal dagen in de maand | 28 t/m 31 | 31 |
| c | datum in ISO 8601 formaat; vaste lengte, met voorloopnullen | 2008-05-22T20:58:52+00:00 | |
| r | datum in RFC 2822 formaat; variabele lengte, zonder voorloopnullen | Thu, 22 May 2008 20:58:52 +0000 | |
[bewerk] 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.
[bewerk] Installeren
Zie voor de rode koppelingen Installeer je eigen Wiki.
Download beide bestanden en zet ze in een nieuwe map met de naam ParserFunctions in je extensions map.
Plaats dan de nu volgende regel aan het eind van je LocalSettings.php:
require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );
Je kan de codeboom hier afstruinen:
[bewerk] Externe links
- m:ParserFunctions
- De discussie aangaande ParserFunctions in het archief Wikitech-l e-maillijst
- ParserFunctions proefballon
- en:Category:Templates using ParserFunctions

