web-dev-qa-db-fra.com

Créer un modèle MediaWiki pour formater le code source

Je veux créer un modèle MediaWiki comme

<syntaxhighlight lang="Java" style="background-color:lightgray; border:1px dashed gray;">
{{{code}}}
</syntaxhighlight>

et l'utiliser dans les pages d'articles normales

{{SourceCode|source=public static void main() {...}}}

mais le problème est que les balises <syntaxhighlight></syntaxhighlight> défont le paramètre {{{code}}} et que le résultat formaté actuel est

<syntaxhighlight lang="Java" style="background-color:lightgray; border:1px dashed gray;">
{{{code}}}
</syntaxhighlight>

au lieu de

<syntaxhighlight lang="Java" style="background-color:lightgray; border:1px dashed gray;">
public static void main() {...}
</syntaxhighlight>

Une idée?

3
qazwsx

Le problème est que le code à l'intérieur de "balises d'extension" comme <syntaxhighlight> n'est pas analysé, c'est pourquoi le {{{code}}} n'est pas remplacé par la valeur du paramètre code.

Ce que vous devez utiliser est d'utiliser {{#tag}} fonction d'analyse:

{{#tag:syntaxhighlight|{{{code}}}|lang=Java|style=background-color:lightgray; border:1px dashed gray;}}
2
svick

Oui, vous pouvez le faire avec les balises <includeonly>, comme ceci: (styles personnalisés supprimés pour plus de clarté)

<includeonly><syntaxhighlight lang="Java"></includeonly>
{{{code}}}
<includeonly></syntaxhighlight></includeonly>

De mediawiki.org :

Le balisage <includeonly>...</includeonly> signifie que le texte entre les balises ne sera utilisé que lorsque la page est incluse dans une autre page et n'apparaîtra pas sur la page elle-même.

Donc, fondamentalement, les balises <syntaxhighlight> sont ignorées sur la page de modèle, trompant l’analyseur en mettant en surbrillance le paramètre de code lorsqu’il est inclus dans une autre page.

0
NinjaBearMonkey