ExpandTemplates
Note : si vous modifiez cette page, vous acceptez de placer votre contribution sous licence CC0. Plus d’informations sont disponibles sur le projet Aide dans le domaine public. Quelques versions anciennes de cette page ont été importées sous la licence CC BY-SA. Seules les nouvelles contributions sont dans le domaine public. |
ExpandTemplates permet l'expansion de manière récursive des modèles, des fonctions d'analyses et des variables.
La page Special:ExpandTemplates possède deux champs de saisie, l'un pour placer le texte wiki, et l'autre pour entrer un nom de page.
Dans la fenêtre Résultat le texte wiki expansé est fourni, c'est à dire que les modèles, les fonctions d'analyse et les variables sont tous développés de manière récursive; les variables qui dépendent d'un nom de page sont développées en se basant sur le nom de page fourni.
Ceci est un résultat intermédiaire avant qu'une page ne soit générée après avoir été enregistrée ou que le bouton "Preview" n'ait été pressé pour obtenir un aperçu (ou que le texte wiki résultant ne soit soumis à un autre processus), ce qui est utile pour comprendre et pour déboguer l'expansion du texte wiki.
La substitution n'est pas prise en charge (un processus séparé d'expansion [transformation pré-enregistrement] est démarré après avoir entré le wikicode dans une fenêtre d'éditeur et avoir pressé "Prévisualiser" ou "Enregistrer", mais avant l'analyse syntaxique régulière; le wikicode résultant peut être analysé dans une fenêtre d'édition arbiraire en pressant "Voir les modifications", ou en enregistrant une page de test et en réouvrant la fenêtre d'édition).
Si vous devez utiliser la substitution, utilisez l'API d'analyse au lieu de l'API ExpandTemplates et activez les transformations avant enregistrement [pour cela mettez pst
à true
].
En plus, il y a une zone d'aperçu. Néanmoins, ceci montre le résultat mis en forme de l'expansion du contenu expansé du wikicode une nouvelle fois (tâche T30616). Bien que le résultat soit habituellement le même qu'après une simple expansion, il peut être différent si la première passe fait apparaitre des accolades '{' '}'.
Le mot magique '!' fournit une manière d'autoriser "|" dans une valeur de paramètre pour un modèle ou une fonction d'analyse, en particulier pour son utilisation dans la syntaxe des tableaux. Ce modèle peut être utilisé avec ExpandTemplates pour réaliser l'expansion ou la substitution partielle.
Le tableau, en utilisant Template:2x, montre qu'un appel avec un séparateur de paramètres "|" dans le formulaire {{!}} empêche l'expansion ordinaire; la dernière colonne montre la zone d'aperçu (avec le résultat de la double expansion).
Utilisation
wikicode original | wikicode original | rendu | aperçu fourni par ExpandTemplates |
---|---|---|---|
{{2x|[[MediaWiki]] }}
|
[[MediaWiki]] [[MediaWiki]]
|
MediaWiki MediaWiki | MediaWiki MediaWiki |
{{2x{{!}}[[MediaWiki]] }}
|
{{2x|[[MediaWiki]] }}
| {{2x|MediaWiki }} | MediaWiki MediaWiki |
{{2x{{!{{!}}}}[[MediaWiki]] }}
|
{{2x{{!|}}[[MediaWiki]] }}
| {{2x{{!|}}MediaWiki }} | {{2x|MediaWiki }} |
Supprimer les commentaires
L'option « Supprimer les commentaires » permet de choisir de supprimer les commentaires, pas uniquement dans le résultat final mais tout au long du processus d'expansion. Ceci touche aux résultats des fonctions d'analyse : un commentaire dans l'expression de #expr ou #ifexpr produit un message d'erreur sauf si « Supprimer les commentaires » est activé, et que les commentaires concernent #if et ifeq.
Exemple :
{{#expr:<!--p-->3}} {{#ifeq:<!--p-->3|3|1|0}} {{#if:<!--p-->|1|0}}
Expansion normale, et ExpandTemplates avec "Supprimer les commentaires" activé :
3
1
0
Substitution complète, et ExpandTemplates avec « Supprimer les commentaires » désactivé :
Expression error: Unexpected < operator
0
1
Arbre de tri XML
Optionnellement vous pouvez afficher la représentation sous forme d'arbre XML de l'analyse (le DOM XML - Document Object Model - du wikicode, appelé également arborescence du document ou arbre DOM) - (voir aussi Manuel:Preprocessor DOM.php ). Par exemple :
a [[b|c]] {{CURRENTYEAR}} {{{{{a}}}}} {{#ifeq:2|3|a|b}} {{#switch:a|a=3|b=4|a=5}} {{a|b|c=d[[e|f]]g|h}} {{{a|b}}} {{#tag:nowiki|a=b}} {{#tag:nowiki|aeb}}
donne :
<root>a [[b|c]]
<template lineStart="1"><title>CURRENTYEAR</title></template>
<template lineStart="1"><title><tplarg><title>a</title></tplarg></title></template>
<template lineStart="1"><title>#ifeq:2</title><part><name index="1"/><value>3</value></part><part><name index="2"/><value>a</value></part><part><name index="3"/><value>b</value></part></template>
<template lineStart="1"><title>#switch:a</title><part><name>a</name>=<value>3</value></part><part><name>b</name>=<value>4</value></part><part><name>a</name>=<value>5</value></part></template>
<template lineStart="1"><title>a</title><part><name index="1"/><value>b</value></part><part><name>c</name>=<value>d[[e|f]]g</value></part><part><name index="2"/><value>h</value></part></template>
<tplarg lineStart="1"><title>a</title><part><name index="1"/><value>b</value></part></tplarg></root>
<template lineStart="1"><title>#tag:nowiki</title><part><name>a</name>=<value>b</value></part></template>
<template lineStart="1"><title>#tag:nowiki</title><part><name index="1"/><value>aeb</value></part></template>
Ainsi :
- Le résultat indique une étape dans le traitement avant l'évaluation actuelle. Ainsi même les noms de variables, les fonctions d'analyse syntaxique et les modèles, n'ont pas été déterminés. De même les deux points et le '#' ne sont pas encore détectés, donc aucune distinction n'est faite entre les variables, les fonctions d'analyse syntaxique et les modèles, simplement banalisés, qu'ils représentent des variables, des fonctions d'analyse syntaxique ou des modèles existants ou pas. C'est pourquoi :
- on distingue les éléments des paramètres selon qu'ils comportent ou pas un signe "=", même si pour certains éléments de quelques fonctions d'analyse, ils sont traités après tout, comme du texte brut.
- "|a=b|a=c" n'est pas réduit cependant en "|a=c" car le fait que les côtés gauches sont égaux, n'est connu qu'après leur évaluation, et aussi parce que cette réduction dépend de l'évaluation du titre (title). Par exemple, pour les titres de la forme
#switch:
.., "|a=b|a=c" est équivalent après tout à "|a=b".
- Une paire de crochets doubles empêche "|" d'être interprété comme séparateur de paramètres, mais les liens ne sont pas affichés séparément dans l'arbre.
Texte entré dans une URL
Le wikicode qui sert d'entrée peut également être mis dans l'URL, par exemple en utilisant urlencode, {{fullurl:special:ExpandTemplates|wpInput={{urlencode:{{texpr{{!}}abc}}}}}}
donne //www.mediawiki.org/w/index.php?title=Special:ExpandTemplates&wpInput=%7B%7Btexpr%7Cabc%7D%7D.
{{!}}
, en utilisant {{!}}, empêche le modèle texpr de développer l'URL, et empêche aussi "|" d'être interprété comme séparateur du paramètre de urlencode avec un second paramètre vide.
Il peut également être utilisé dans un appel de modèle sans paramètre, quoique dans la boîte de saisie de ExpandTemplates cela devienne un modèle avec un paramètre non nommé {{{1}}} qui vaut une chaîne vide au lieu d'être non défini; par exemple {{fullurl:special:ExpandTemplates|wpInput={{tc{{!}}}}}}
.
Cela ne fonctionne pas pour les variables et les fonctions de l'analyseur; utilisez à la place les codes avec pourcent pour une paire d'accolades (voir le wikicode); pour le préfixe de ParserFunctions "#" mettre %23 :
https://www.mediawiki.org/w/index.php?title=Special:ExpandTemplates&wpInput={{CURRENTTIME}}.
https://www.mediawiki.org/w/index.php?title=Special:ExpandTemplates&wpInput={{%23expr:2*3}}.
Exemple
Paramètres de la requête
- wpContextTitle=pagetitle
- wpGenerateRawHtml=true
- wpGenerateXml=true
- wpInput=
- wpRemoveComments=true
- wpRemoveNowiki=true
URL:
Personnalisation
- Ajuster la largeur de la boîte
Par défaut, la largeur de la boîte de saisie (ainsi que celle des sorties) n'est que de 11 caractères. Vous pouvez changer cela pour obtenir la largeur maximale, en ajoutant un code similaire à ceci dans votre CSS :
textarea {
border: 1px solid #2f6fab;
color: Black;
background-color: white;
width: 100%;
padding: 0.1em;
overflow: auto;
}