Help:Extension:ParserFunctions/fr

Cette extension MediaWiki est une collection de fonctions du parseur permettant la programmation au sein des modèles. Les fonctions du parseur ont cette syntaxe typique :



Fonctions
Ce module définit huit fonctions pour le moment : expr, if, ifeq, ifexist, ifexpr, rel2abs, time et switch.

if
La fonction if</tt> est une construction if-then-else. Sa syntaxe est la suivante :

Si la condition est une chaîne vide ou une espace, elle sera alors considérée comme fausse et &lt;sinon texte2> sera renvoyé. Sinon, c'est &lt;alors texte1> qui est renvoyé. Le &lt;sinon texte2> peut être omis, dans ce cas le résultat retourné sera vide si la condition est fausse.

Un exemple, (si le #if est utilisé dans le code de « Modèle » avec « paramètre » présent, vide ou absent) : en tapant : |                       \______________/                                      |                               |                                      _|_                             _|_

Prenez note que la fonction if</tt> ne connait pas le signe « = » ni les expressions mathématiques. renverra « oui » car la chaîne « 1 = 2 » n'est pas vide. Elle est prévue en tant que structure if définie. Pour comparer des chaînes, utilisez ifeq</tt>. Pour comparer des nombres, utilisez ifexpr</tt>.

Exemples avec if</tt>
->   ->    ->

->   ->    ->    ->

ifeq
ifeq</tt> compare deux chaînes et retourne une autre chaîne selon le résultat de la comparaison. La syntaxe est la suivante :

ifexist
retourne une chaîne selon l'existence ou non d'une page.

ne gère pas les chemins relatifs (comme '../foo') ; pour cela, l'utiliser en combinaison avec.

switch
compare une valeur unique à plusieurs autres et renvoie une chaîne si une correspondance est trouvée. La syntaxe est principalement :

cherchera à travers toutes les valeurs jusqu'à ce qu'une correspondance soit trouvée. Lorsque la correspondance est trouvée, le résultat pour cette valeur est renvoyée (la chaîne de texte après le signe égal). Si aucune correspondance n'a été trouvée, le dernier résultat trouvé n'ayant pas de signe égal sera renvoyé comme texte par défaut. Si votre résultat par défaut doit comporter un signe égal, vous devez utiliser  :

Notez qu'il est également possible d'avoir une « dégringolade » de valeurs (qui réduit la nécessité de résultats dupliqués). Par exemple :

Notez la façon dont les valeur1 et valeur2 n'ont pas de signe égal. Si elles entrent en correspondance, elles auront alors le résultat de la valeur3 (c'est-à-dire que nous aurons le résultat3).

En revanche, (contrairement au  de nombreux langages de programmation) le code suivant n'est pas possible :

Si la &lt;valeur à comparer&gt; est &lt;valeur1&gt;, le résultat sera &lt;résultat1&gt; seulement. Il faut donc dans ce cas, employer un deuxième.

expr
La fonction expr</tt> calcule des expressions mathématiques. La syntaxe est :

Les opérateurs supportés (classés par ordre de priorité de traitement) sont :
 * {| class="wikitable"

! Opérateur ! Opération ! Exemple ! * ! / ou div ! + ! - ! mod ce reste a le même signe que le quotient et est inférieur strictement, en valeur absolue, à la valeur absolue du diviseur ! round ou limite le nombre de décimales après la virgule ! = ! <> ou != ! < ! > ! <= ! >= ! and ! or ! not !
 * Multiplication
 * Division
 * Addition
 * Soustraction (ou négation)
 * Modulo, donnant le reste d'une division euclidienne ;
 * Arrondit un nombre au nombre spécifié
 * Égalité
 * Inégalité
 * Inférieur à
 * Supérieur à
 * Inférieur ou égal à
 * Supérieur ou égal à
 * ET logique
 * OU logique
 * NON logique
 * Groupage d'opérateurs
 * }
 * }

Les opérateurs booléens considèrent 0 comme faux et 1 comme vrai. Les nombres ont leur décimale marquée par le point décimal «. ». Les notations scientifiques de type Fortran ne sont pas supportées.

Exemple :

donne :

qui correspond à 100 °F converti en °C, résultat arrondi au nombre entier le plus proche.

ifexpr
ifexpr</tt> évalue une expression mathématique et renvoie une ou deux chaînes selon le résultat.

Si l'expression est évaluée à zéro, alors sinon texte est renvoyé, sinon c'est alors texte qui sera renvoyé. La syntaxe des expressions est la même que pour expr</tt>.

time
La ParserFunction #time</tt> évalue l'heure courante sur le serveur (UTC sur les sites de la fondation WikiMedia). Son paramètre est une chaîne de format, dont certaines lettres sont reconnues pour générer un champ basé sur l'heure actuelle, les autres caractères de la chaîne étant conservés verbatim dans le résultat (ces chaînes de format sont identiques à celles supportées dans le langage de programmation PHP utilisé sur le serveur). Les valeurs non numériques retournées dépendent de la la locale du serveur (langue, conventions locales de dates et heures, fuseau horaire), en anglais et à l'heure UTC sur le serveur Meta de WikiMedia :

(explication des champs à compléter)

rel2abs
convertit un chemin relatif en un chemin absolu.

Un chemin relatif est un chemin commençant par '/', './', '../', contenant '/../' ou '/.', ou est simplement la chaîne '..' ou '.'. Si un chemin de base est donné, il doit être défini de façon absolue.

subst
L'emploi de subst</tt> à une fonction du parseur fonctionne, à condition qu'il n'y ait aucun espace entre « subst: » et « # ». Voir également la substitution récursive optionnelle.

Tableaux
Actuellement, la syntaxe du pipe des tableaux du wiki ne fonctionne pas au sein des conditionnelles, il y a deux moyens de contourner le problème :
 * cacher le pipe de la fonction parseur en le mettant dans un modèle, par exemple |
 * utiliser la syntaxe html des tableaux à la place (solution préférable dans le code des modèles).

Installation
Ne concerne que ceux qui ont installé un autre wiki sur leur propre site et désirent intégrer cette fonction. Téléchargez les quatre fichiers suivants et placez-les dans un nouveau répertoire appelé ParserFunctions dans votre répertoire extensions.


 * Expr.php
 * ParserFunctions.php
 * ParserFunctions.i18n.php
 * ParserFunctions.i18n.magic.php

Ensuite, placez le texte suivant à la fin de votre LocalSettings.php :

require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );

Vous pouvez également voir l'arborescence du code ici :


 * ParserFunctions in MediaWiki SVN

1.6
La plupart des ParserFunctions (à l'exception de #if, qui ne fonctionne pas du tout) fonctionnent aussi bien dans MediaWiki 1.6, mais la syntaxe des ParserFunctions est précédée du caractère '#'. Si vous voulez ajouter le caractère '#', recherchez cette partie du code dans 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' ) );

Puis, replacez avec ce code :

$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' ) );

Voir aussi

 * Help:Extension:ParserFunctions pour une aide plus détaillée et à jour ;
 * Extension:StringFunctions ;
 * Extension:DynamicFunctions ;
 * Extension:VariablesExtension.

Liens externes

 * The discussion about the ParserFunctions in the Wikitech-l list archive
 * ParserFunctions trial
 * meta:Category:Templates using ParserFunctions
 * en:Category:Templates using ParserFunctions