Aide:ParserFunctions

De Poképédia
Aller à la navigation Aller à la recherche

Cette page d'aide a été rédigée de manière à contenir le plus petit nombre de liens bleus possible, afin de faciliter sa lecture.


Les ParserFunctions sont des ajouts à la syntaxe wiki qui sont particulièrement utilisées dans les modèles. Elles servent à afficher un résultat différent en fonction de la valeur d'entrée. Il existe une dizaine de ParserFunctions différentes, mais seules les quatre principales seront ici abordées.

#if

Théorie

Syntaxe : {{#if: paramètre | texte affiché si paramètre est défini | texte affiché si paramètre n'est pas défini }}

La fonction #if est la plus basique. Elle sert à vérifier qu'un paramètre est défini, et à afficher quelque chose de différent si c'est le cas ou si ce n'est pas le cas.

La dernière partie est facultative : {{#if: paramètre | texte affiché si paramètre est défini }} fonctionne tout à fait. Dans ce cas, si paramètre n'est pas défini, rien se s'affichera.

Attention : toujours mettre une barre verticale (« | ») après le nom du paramètre dans la première partie d'une fonction #if, sinon le paramètre sera considéré comme défini même s'il ne l'est pas.

Exemple

On prend ici une exemple tiré de l'infobox Capacité :

{{#if: {{{légende|}}} |
{{!}} colspan="2" class="précision" {{!}} {{{légende}}}
{{!}}- }}

On veut que la ligne où s'affiche la légende n'apparaisse que quand le paramètre « légende » est défini. Dans ce cas là, on utilise #if. C'est ce à quoi sert le code ci-dessus.

Cet exemple permet aussi de découvrir une remarque importante qui est valable pour toutes les ParserFunctions. D'habitude, on aurait fait cette case de tableau de cette façon : | colspan="2" class="précision" | {{{légende}}}, et |- pour changer de ligne. Cependant, la barre verticale (« | ») est un élément central des ParserFunctions et en mettre dans le texte/code à afficher perturberait le fonctionnement. Par conséquent, il faut remplacer toutes les barres verticales par le mot magique « ! ». Le fait de devoir remplacer ou non les barres verticales dépend de la situation. Par exemple dans un lien du style [[Nom de la page|Texte affiché]], il n'est pas nécessaire de le faire, tout comme si une ParserFunction est incluse dans une autre ParserFunction.

#ifeq

Théorie

Syntaxe : {{#ifeq: paramètre | valeur | texte affiché si paramètre et valeur identiques | texte affiché si paramètre et valeur différents }}

La fonction #ifeq sert à vérifier si un paramètre est égal à une valeur et à afficher un résultat en fonction de cela.

Comme pour #if, la dernière partie est facultative : {{#ifeq: paramètre | valeur | texte affiché si paramètre et valeur identiques }} ne renverra rien si paramètre et valeur sont différents.

Exemple

#ifeq est utilisée dans un grand nombre de modèles. Son utilisation la plus courante est sans doute pour les catégories. Tout modèle incluant la page où il est utilisé dans une ou plusieurs catégorie(s) doit posséder un paramètre « catégories » qui permet de désactiver les catégories en écrivant « catégories=non ». Une des manières les plus utilisées pour faire ça est celle-ci :
{{#ifeq: {{{catégories|oui}}} | oui | [[Catégorie:Bidule]] }}

Dans ce cas, cela fonctionne de la manière suivante :

  • si « catégories » n'est pas défini, il est remplacé par « oui » et la catégorie est donc incluse ;
  • si « catégories » est défini « oui », idem ;
  • si catégories est défini par n'importe quoi d'autre, la catégorie n'est pas incluse.

#switch

Théorie

Syntaxe : {{#switch: paramètre | valeur1 = texte affiché si paramètre et valeur1 identiques | valeur2 = texte affiché si paramètre et valeur2 identiques | … | #default = texte affiché par défaut }}

La fonction #switch permet de comparer un paramètre à différentes valeurs et de renvoyer un texte quand ce paramètre est égal à une valeur. On peut mettre autant de valeur et de texte correspondant que l'on veut.

Une valeur par défaut peut être définie. Si c'est le cas, quand paramètre n'est égal à aucune valeur, la fonction renverra le texte par défaut. Si la valeur par défaut n'est pas définie et que paramètre n'est égal à aucune valeur, rien ne s'affichera.

Il est aussi important de noter que plusieurs paramètres différents peuvent renvoyer un même texte. Imaginons une fonction #switch de ce genre là :
{{#switch: paramètre | valeur1 = premier texte | valeur2 | valeur3 = deuxième texte | valeur4 = troisième texte | #default = texte par défaut }}
On remarque ici que valeur2 n'a pas de texte associé. Que se passera-t-il alors si paramètre et valeur2 sont identiques ? C'est ce qu'on appelle un groupe de valeurs, ici valeur2 et valeur3 renvoient le même texte. Le résultat sera donc « deuxième texte ».

Exemple

La fonction #switch est par exemple utilisée dans le modèle Abréviation. Prenons cette partie du modèle :

{{#switch: {{lc: {{{1}}}}}
| o | or = [[Pokémon Or|{{Police|{{{2|o}}}|O}}]]
| oa | or et argent = [[Pokémon Or|{{Police|{{{2|o}}}|O}}]][[Pokémon Argent|{{Police|{{{2|a}}}|A}}]]
| oac | or, argent et cristal = [[Pokémon Or|{{Police|{{{2|o}}}|O}}]][[Pokémon Argent|{{Police|{{{2|a}}}|A}}]][[Pokémon Cristal|{{Police|{{{2|c}}}|C}}]]
| #default = {{{1|}}}
}}

Ici, le modèle réagira de cette façon :

  • si le paramètre vaut « o » ou « or », la fonction renverra « O » ;
  • si le paramètre vaut « oa » ou « or et argent », la fonction renverra « OA » ;
  • si le paramètre vaut « oac » ou « or, argent et cristal », la fonction renverra « OAC » ;
  • sinon, la fonction renverra le paramètre donné.

#expr

Théorie

Syntaxe : {{#expr: expression }}

La fonction #expr permet de faire des calculs mathématiques. Les principaux opérateurs sont :

  • « + » pour une addition ;
  • « - » pour une soustraction ;
  • « * » pour une multiplication ;
  • « / » pour une division ;
  • « ^ » pour une puissance.

Exemple

  • {{#expr: 2 * 6}} donne 12
  • {{#expr: 3 * 10^2}} donne 300

On peut remplacer un nombre par un paramètre. Ainsi, pour {{#expr: {{{1}}}^2 - 10}}, la fonction renverra le carré du nombre moins 10.

Imbrication de ParserFunctions

Il est très courant de devoir utiliser plusieurs ParserFunctions à la fois, ou en d'autres termes d'en imbriquer.

Imaginons qu'on a un paramètre non nommé. Si le paramètre n'est pas défini, le modèle ? s'affiche. Le code sera donc {{#if: {{{1|}}} | ... | {{?}} }}.

Maintenant, disons que quand la valeur est définie, plusieurs choses peuvent s'afficher :

  • si la valeur est « Bulbizarre », affiche « Premier Pokémon du Pokédex national. » ;
  • si la valeur est « Pikachu », affiche « Mascotte de Pokémon. » ;
  • sinon, affiche « Un autre Pokémon. »

Dans un cas comme celui-ci, on a le choix entre utiliser deux #ifeq ou un seul #switch.

Si on décide d'utiliser la fonction #switch, le résultat final sera :

{{#if: {{{1|}}} | {{#switch: {{{1}}}
| Bulbizarre = Premier Pokémon du [[Liste des Pokémon dans l'ordre du Pokédex National|Pokédex national]].
| Pikachu = Mascotte de [[Pokémon (licence)|Pokémon]].
| #default = Un autre [[Pokémon (créature)|Pokémon]].
}} | {{?}} }}

Pour aller plus loin

  • La page d'aide de mediawiki.org qui offre des détails sur ces fonctions et explique le fonctionnement de ParserFunctions plus avancées : #iferror, #ifexpr, #ifexist, #reb2labs, #time, #timel et #titleparts. Ces fonctions sont très peu utilisées voire inutilisées sur Poképédia, et il n'est donc pas nécessaire de savoir les utiliser, mais il est quand même bon de retenir que d'autres ParserFunctions existent.