Manual:Parser.php/fr
![]() | Cette page est obsolète. |
Fichier MediaWiki : Parser.php | |
---|---|
Emplacement : | includes/parser/ |
Code source : | master • 1.43.1 • 1.42.6 • 1.39.12 |
Classes : | MediaWiki\Parser\Parser |
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
- Appeler la fonction d'aide
Parser::internalParse()
, qui appelle à son tourParser::replaceVariables
, qui remplace les variables magiques, les modèles et les arguments du modèle par le texte approprié.- Il appelle
Parser::preprocessToDom
, qui prépare le wikicode et renvoie l'arborescence du document. - Ensuite, il crée un objet
PPFrame
et appelle sa méthodeexpand()
pour faire la magie du modèle réel.
- Il appelle
Sanitizer::removeHTMLtags()
nettoie le HTML, supprime les balises et les attributs dangereux et supprime les commentaires HTML.Parser::handleTables
, qui gère et génère le wikicode pour les tables.Parser::handleDoubleUnderscore
, qui supprime les éléments doublement soulignés valides, comme __NOTOC__, et les enregistre dans le tableau$Parser->mDoubleUnderscores
.Parser::handleHeadings
, qui réalise l'analyse et génère les entêtes de section.Parser::handleInternalLinks
, qui traite les liens internes ([[ ]]
) et les stocke dans$Parser->mLinkHolders
(un objetLinkHolderArray
),Parser::handleAllQuotes
, qui remplace les apostrophes simples par des balises HTML (<i>
,<b>
, etc).Parser::handleExternalLinks
, qui remplace et génère les liens externes.Parser::handleMagicLinks
, qui remplace les chaînes spéciales comme "ISBN xxx" et "RFC xxx" par des liens externes magiques.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.
- Ensuite,
parse()
appelleParser::doBlockLevels
, qui rend les listes à partir de lignes commençant par ':', '*', '#', etc. Parser::replaceLinkHolders
est appelé, appelleLinkHolderArray::replace
sur$Parser->mLinkHolders
pour remplacer les paramètres de lien par les liens réels, dans le tampon Placeholders créé dans Skin::makeLinkObj()- Ensuite, le texte est converti dans la langue (le cas échéant) en utilisant la méthode
convert
de l'objet Language approprié. 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.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.- Si HTML tidy est activé,
MWTidy::tidy
est appelé pour faire la mise en ordre. - Enfin, le résultat HTML rendu du processus d'analyse syntaxique est stocké dans l'objet
ParserOutput
$Parser->mOutput
, qui est renvoyé à l'appelant deParser::parse
.
Accroches
Les accroches suivantes sont disponibles à différentes étapes du cycle d'analyse :
Version | Accroche | Description |
---|---|---|
1.5.0 | ParserAfterTidy | Utilisé pour ajouter un traitement final à la page entièrement rendue. |
1.6.0 | ParserBeforeInternalParse | |
1.6.0 | ParserClearState | Appelé à la fiin de Parser::clearState(). |
1.6.0 | ParserGetVariableValueSwitch | Assigne une valeur à une variable définie par l'utilisateur. |
1.6.0 | ParserGetVariableValueTs | Utilisé pour modifier la valeur de l'heure pour le mot magique {{LOCAL...}}. |
1.6.0 | ParserTestParser | Appelé lors de la création d'une nouvelle instance de Parser pour les tests de l'analyseur. |
1.10.0 | InternalParseBeforeLinks | Utilisé pour traiter le code wiki expansé après que <nowiki>, les commentaires HTML et les modèles aient été traités. |
1.10.1 | BeforeParserFetchTemplateAndtitle | Permet à une extension de spécifier la version d'une page à obtenir pour l'inclusion dans un modèle. |
1.10.1 | BeforeParserrenderImageGallery | Permet à une extension de modifier une galerie d'images avant qu'elle ne soit générée. |
1.12.0 | ParserFirstCallInit | appelé lorsque l'analyseur s'initialise pour la première fois. |
1.12.0 | ParserMakeImageParams | Modifier les paramètres utilisés pour générer une image avant qu'elle soit générée. |
1.18.0 | BeforeParserFetchFileAndTitle | Avant que l'image ne soit rendue par le Parseur. |
1.19.0 | ParserSectionCreate | Appelé chaque fois que l'analyseur crée une section de document à partir du wikicode. |
1.22.0 | ParserLimitReportFormat | Replacement for deprecated ParserLimitReport |
1.22.0 | ParserLimitReportPrepare | Replacement for deprecated ParserLimitReport |
1.36.0 | BeforeParserFetchTemplateRevisionRecord | Replacement for deprecated BeforeParserFetchTemplateAndtitle |
Autres méthodes
Accesseurs
getCustomDefaultSort ()
Accesseur pour $mDefaultSort. A la différence de getDefaultSort(), il renvoiefalse
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
- Code – Aperçu des fichiers clé et des répertoires dans le code source MediaWiki
- Manuel:ParserOptions.php
- Manual:PPFrame.php - interface du cadre d'expansion
Liens externes
Références
Category:Parser/fr#%20- ↑ Avant MediaWiki 1.36, il était encore possible de construire directement une classe Parser.