ParserFunctions
Un article de ReseauGerontologiqueAutunois.
< retour Syntaxe
Ces fonctions du parseur permettent la programmation au sein des modèles. Elles ont cette syntaxe typique :
{{#nom_de_la_fonction: argument 1 | argument 2 | argument 3...}}Huit fonctions sont définit actuellement: expr, if, ifeq, ifexist, ifexpr, rel2abs, time et switch.
Sommaire |
Fonction #expr
La fonction expr calcule des expressions mathématiques. La syntaxe est :
{{#expr:expression}}
Les opérateurs supportés (classés par ordre de priorité de traitement) sont :
Opérateur Opération Exemple * Multiplication {{#expr: 30 * 7}} = 210 / ou div Division {{#expr: 30 / 7}} = 4.28571428571 + Addition {{#expr: 30 + 7}} = 37 - Soustraction (ou négation) {{#expr: 30 - 7}} = 23 mod Modulo, donnant le reste d'une division euclidienne ;
ce reste a le même signe que le quotient et est inférieur
strictement, en valeur absolue, à la valeur absolue du diviseur{{#expr: 30 mod 7}} = 2 round Arrondit un nombre au nombre spécifié
ou limite le nombre de décimales après la virgule{{#expr: 30 / 7 round 7}} = 4.2857143 = Égalité {{#expr: 30 = 7}} = 0 <> ou != Inégalité {{#expr: 30 <> 7}} = 1 < Inférieur à {{#expr: 30 < 7}} = 0 > Supérieur à {{#expr: 30 > 7}} = 1 <= Inférieur ou égal à {{#expr: 30 <= 7}} = 0 >= Supérieur ou égal à {{#expr: 30 >= 7}} = 1 and ET logique {{#expr: 30 and 7}} = 1 or OU logique {{#expr: 30 or 7}} = 1 not NON logique {{#expr: not 7}} = 0 ( ) Groupage d'opérateurs {{#expr: (30 + 7) * 7 }} = 259
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 « . ».
Exemple :
{{ #expr: (100 - 32) / 9 * 5 round 0 }}
donne :
38
qui correspond à 100 °F converti en °C, résultat arrondi au nombre entier le plus proche.
Fonction #if
La fonction if est une construction if-then-else. Sa syntaxe est la suivante :
{{ #if: <condition> | <alors texte1> | <sinon texte2> }}
Si la condition est une chaîne vide, un espace ou si elle n'est pas réalisée, elle sera considérée comme fausse
{{#if: | vrai}} ->
{{#if: | vrai | }} ->
{{#if: | vrai | faux}} -> faux
{{#if: quelquechose | vrai}} -> vrai
{{#if: quelquechose | vrai | }} -> vrai
{{#if: quelquechose | vrai | faux}} -> vrai
{{#if: quelquechose | | faux}} ->
Fonction #ifeq
ifeq compare deux chaînes et retourne une autre chaîne selon le résultat de la comparaison. La syntaxe est la suivante :
{{ #ifeq: <texte à comparer 1> | <texte à comparer 2> | <texte si égal> | <texte si différent> }}
Fonction #ifexist
ifexist retourne une chaîne selon l'existence ou non d'une page.
{{#ifexist: <nom de la page> | <texte si la page existe> | <texte si la page n'existe pas>}}
{{#ifexist:}} ne gère pas les chemins relatifs ; pour cela, l'utiliser en combinaison avec {{rel2abs:}}.
Fonction #ifexpr
ifexpr évalue une expression mathématique et renvoie une ou deux chaînes selon le résultat.
{{ #ifexpr: <expression> | <alors texte> | <sinon texte> }}
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.
Fonction #re12abs
rel2abs convertit un chemin relatif en un chemin absolu.
{{#rel2abs: <chemin>}}
{{#rel2abs: <chemin> | <chemin de base> }}
Un chemin relatif est un chemin
- commençant par '/', './', '../'
- contenant '/../' ou '/.',
- contenant simplement la chaîne '..' ou '.'.
Si un chemin de base est donné, il doit être défini de façon absolue.
Un chemin absolue contient:
http//<Nom du domaine>/<Chemin complet>
Exemple:
Nom du domaine=reseau-geronto-autun.org
Chemin complet=wiki/index.php/ParserFunctions#Fonction_.23re12abs
http://reseau-geronto-autun.org/wiki/index.php/ParserFunctions#Fonction_.23re12abs
Fonction #time
NON FONCTIONNEL ACTUELLEMENT
Fonction #switch
switch compare une valeur unique à plusieurs autres et renvoie une chaîne si une correspondance est trouvée. La syntaxe est principalement :
{{ #switch: <valeur à comparer>
| <valeur1> = <résultat1>
| <valeur2> = <résultat2>
| ...
| <valeurn> = <résultatn>
| <résultat par défaut>
}}
switch 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 #default:
{{ #switch: <valeur à comparer>
| <valeur> = <résultat>
| #default = <résultat par défaut>
}}
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 :
{{ #switch: <valeur à comparer>
| <valeur1>
| <valeur2>
| <valeur3> = <résultat3>
| ...
| <valeurn> = <résultatn>
| <résultat par défaut>
}}
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).
Tableaux
Actuellement, la syntaxe du pipe | des tableaux du wiki ne fonctionne pas au sein des conditionnelles, il y a un moyen de contourner le problème : Il suffit de cacher le pipe du tableau en utilisant le modèle {{!}}
Subst
L'emploi de subst à une fonction du parseur fonctionne, à condition qu'il n'y ait aucun espace entre « subst: » et « # ».
