Manual:Parser.php/fr

Category:Outdated pages/fr Category:MediaWiki code/fr#Parser.php

Description

Ce fichier contient la classe Parser et la méthode parse, qui convertit le Wikicode en HTML.

Obtenir un objet Parser

Dans de nombreux contextes, comme lors de la création d'une fonction d'analyse ou d'une page spéciale, vous devez avoir accès à une instance Parser.

Comment créer une nouvelle instance Parser

Si vous n'y avez pas accès, vous pouvez créer une nouvelle instance en utilisant ParserFactory et en appelant sa méthode create .[1] Le constructeur de ParserFactory nécessite plusieurs arguments. Pour créer un ParserFactory avec les options par défaut, utilisez MediaWikiServices::getInstance()->getParserFactory().

Obtenir une nouvelle instance Parser avec une ligne de code :

$localParser = MediaWikiServices::getInstance()->getParserFactory()->create();

Cette nouvelle instance n'est pas encore prête à être utilisée. L'étape suivante est d'initialiser ParserOptions.

Cycle de l'analyse syntaxique

  1. Appeler la fonction d'aide Parser::internalParse(), qui appelle à son tour
    1. Parser::replaceVariables, qui remplace les variables magiques, les modèles et les arguments du modèle par le texte approprié.
      1. Il appelle Parser::preprocessToDom, qui prépare le wikicode et renvoie l'arborescence du document.
      2. Ensuite, il crée un objet PPFrame et appelle sa méthode expand() pour faire la magie du modèle réel.
    2. Sanitizer::removeHTMLtags() nettoie le HTML, supprime les balises et les attributs dangereux et supprime les commentaires HTML.
    3. Parser::handleTables, qui gère et génère le wikicode pour les tables.
    4. Parser::handleDoubleUnderscore, qui supprime les éléments doublement soulignés valides, comme __NOTOC__, et les enregistre dans le tableau $Parser->mDoubleUnderscores.
    5. Parser::handleHeadings, qui réalise l'analyse et génère les entêtes de section.
    6. Parser::handleInternalLinks, qui traite les liens internes ([[ ]]) et les stocke dans $Parser->mLinkHolders (un objet LinkHolderArray),
    7. Parser::handleAllQuotes, qui remplace les apostrophes simples par des balises HTML (<i>, <b>, etc).
    8. Parser::handleExternalLinks, qui remplace et génère les liens externes.
    9. Parser::handleMagicLinks, qui remplace les chaînes spéciales comme "ISBN xxx" et "RFC xxx" par des liens externes magiques.
    10. Parser::handleHeadings, qui :
      • les entêtes sont numérotés automatiquement si ces options sont activées,
      • ajoute un lien [edit] aux sections pour les utilisateurs qui ont activé l'option et peuvent modifier la page,
      • ajoute un sommaire en haut pour les utilisateurs qui ont activé l'option, et
      • génération automatique des ancres pour les entêtes.
  2. Ensuite, parse() appelle Parser::doBlockLevels, qui rend les listes à partir de lignes commençant par ':', '*', '#', etc.
  3. Parser::replaceLinkHolders est appelé, appelle LinkHolderArray::replace sur $Parser->mLinkHolders pour remplacer les paramètres de lien par les liens réels, dans le tampon Placeholders créé dans Skin::makeLinkObj()
  4. Ensuite, le texte est converti dans la langue (le cas échéant) en utilisant la méthode convert de l'objet Language approprié.
  5. Parser::replaceTransparentTags était appelé, ce qui a remplacé les balises transparentes par des valeurs fournies par les fonctions de rappel dans $Parser->mTransparentTagHooks. Les accroches des balises transparentes sont comme les accroches de balises de style XML ordinaires, sauf qu'elles fonctionnent plus tard dans la séquence de transformation, sur HTML au lieu du wikicode.
  6. Sanitizer::normalizeCharReferences est appelé, et garantit que toutes les entités et les références de caractères sont légales pour XML et XHTML spécifiquement.
  7. Si HTML tidy est activé, MWTidy::tidy est appelé pour faire la mise en ordre.
  8. Enfin, le résultat HTML rendu du processus d'analyse syntaxique est stocké dans l'objet ParserOutput $Parser->mOutput, qui est renvoyé à l'appelant de Parser::parse.

Accroches

Les accroches suivantes sont disponibles à différentes étapes du cycle d'analyse :

VersionAccrocheDescription
1.5.0ParserAfterTidy Utilisé pour ajouter un traitement final à la page entièrement rendue.
1.6.0ParserBeforeInternalParse
1.6.0ParserClearState Appelé à la fiin de Parser::clearState().
1.6.0ParserGetVariableValueSwitch Assigne une valeur à une variable définie par l'utilisateur.
1.6.0ParserGetVariableValueTs Utilisé pour modifier la valeur de l'heure pour le mot magique {{LOCAL...}}.
1.6.0ParserTestParser Appelé lors de la création d'une nouvelle instance de Parser pour les tests de l'analyseur.
1.10.0InternalParseBeforeLinks Utilisé pour traiter le code wiki expansé après que <nowiki>, les commentaires HTML et les modèles aient été traités.
1.10.1BeforeParserFetchTemplateAndtitle Permet à une extension de spécifier la version d'une page à obtenir pour l'inclusion dans un modèle.
1.10.1BeforeParserrenderImageGallery Permet à une extension de modifier une galerie d'images avant qu'elle ne soit générée.
1.12.0ParserFirstCallInit appelé lorsque l'analyseur s'initialise pour la première fois.
1.12.0ParserMakeImageParams Modifier les paramètres utilisés pour générer une image avant qu'elle soit générée.
1.18.0BeforeParserFetchFileAndTitle Avant que l'image ne soit rendue par le Parseur.
1.19.0ParserSectionCreate Appelé chaque fois que l'analyseur crée une section de document à partir du wikicode.
1.22.0ParserLimitReportFormat Replacement for deprecated ParserLimitReport
1.22.0ParserLimitReportPrepare Replacement for deprecated ParserLimitReport
1.36.0BeforeParserFetchTemplateRevisionRecord Replacement for deprecated BeforeParserFetchTemplateAndtitle

Autres méthodes

Accesseurs

  • getCustomDefaultSort () Accesseur pour $mDefaultSort. A la différence de getDefaultSort(), il renvoie false si aucun n'est défini.
  • getDefaultSort () Accesseur pour $mDefaultSort. Utilise la chaîne vide si aucun n'est défini.
  • getOptions () Obtenir l'objet ParserOptions.
  • getOutput () Obtenir l'objet ParserOutput.
  • getPreprocessor () Obtenir un objet Preprocessor.
  • Relatif à Manual:Revision :
    • getRevisionId () Fournit l'ID de la révision en cours d'analyse.
    • getRevisionTimestamp () Fournit l'horodatage associé à la révision actuelle, ajustée à l'heure du serveur local par défaut.
    • getRevisionUser () Fournit le nom de l'utilisateur qui a modifié la dernière révision.
  • getTags () Accesseur.
  • getTargetLanguage () Fournir la langue cible pour le contenu à analyser.
  • getTitle () Accesseur de l'objet Title.
  • getUser () Fournit un objet de User soit à partir de $this->mUser si celui-ci est défini, ou de l'objet de ParserOptions sinon.

Initialisation

  • Parser::setFunctionHook() Créer une fonction d'analyse syntaxique, comme {{#expr: 1 + 1}} ou {{sum:1|2|3}}. La fonction de rappel doit avoir la forme suivante : function myParserFunction( &$parser, $arg1, $arg2, $arg3 ) { ... }.
  • Parser::setHook() Créer une balise de style HTML, comme <yourtag>texte spécial</yourtag>. La fonction de rappel doit avoir la forme suivante : function myParserHook( $text, $params, $parser, $frame ) { ...}

Propriétés dynamiques

N'ajoutez pas de propriétés de classes à Parser si elles n'ont pas été déclarée par Parser. Les exceptions à part, les propriétés dynamiques sont obsolètes dans PHP 8.2 et elles peuvent ne pas être bien adaptées au passage au parallélisme prévu pour Parsoid. Si vous codez une extension et que vous avez besoin de stocker des données personnalisées dans l'analyseur, voyez les données d'extension pour une solution possible.

Voir aussi

Liens externes

Références

Category:Parser/fr#%20
  1. Avant MediaWiki 1.36, il était encore possible de construire directement une classe Parser.
Category:MediaWiki code/fr Category:Outdated pages/fr Category:Parser/fr