Handboek:Parser.php
Deze pagina is verouderd. |
MediaWiki bestand: Parser.php | |
---|---|
Locatie: | includes/parser/ |
Broncode: | master • 1.42.3 • 1.41.4 • 1.39.10 |
Classes: | MediaWiki\Parser\Parser |
Beschrijving
Dit bestand bevat de class Parser
, die de methode parse
bevat, die Wikitext naar HTML omzet.
Getting the Parser
In many contexts, such as when creating a parser function or special page, you should have access to a Parser instance.
How to create a new Parser instance
If you do not have access, you can create a new instance by using ParserFactory and calling its create
method.[1] The constructor of the ParserFactory takes several arguments. To create a ParserFactory with default options, use MediaWikiServices::getInstance()->getParserFactory()
.
One-liner for getting a new Parser instance:
$localParser = MediaWikiServices::getInstance()->getParserFactory()->create();
This new instance is not ready for use yet. The next step is to set ParserOptions.
The parsing cycle
- Aanroep helper-functie
Parser::internalParse()
, die op zijn beurt aanroeptParser::replaceVariables
, waarmee magische variabelen, sjablonen en sjabloonargumenten worden vervangen door de bijbehorende tekst.- Het roept
Parser::preprocessToDom
aan, die wat wikitext vooraf verwerkt en de documentenboom teruggeeft. - Vervolgens maakt het een
PPFrame
object aan en roept deexpand()
methode aan om de echte sjabloon magie te doen.
- Het roept
Sanitizer::removeHTMLtags()
, die HTML opschoont, gevaarlijke tags en attributen verwijdert en HTML-commentaren verwijdert.Parser::handleTables
, die de wikitext voor tabellen behandelt en weergeeft.Parser::handleDoubleUnderscore
, waarmee geldige items met dubbele onderstrepingsteken, zoals __NOTOC__, worden verwijderd en in array$Parser->mDoubleUnderscores
worden vastgelegd.Parser::handleHeadings
, die sectiekoppen analyseert en weergeeft.Parser::handleInternalLinks
, die interne links verwerkt ([[ ]]
) en ze opslaat in$Parser->mLinkHolders
(eenLinkHolderArray
.html LinkHolderArlay object),Parser::handleAllQuotes
, die enkele aanhalingstekens vervangt door HTML-markering (<i>
,<b>
, enz.).Parser::handleExternalLinks
, die externe links vervangt en opbouwt.Parser::handleMagicLinks
, die speciale teksten zoals "ISBN xxx" en "RFC xxx" vervangt door magische externe links.Parser::handleHeadings
, dat:- automatische nummering van koppen als die optie is ingeschakeld,
- voegt een link [edit] toe aan secties voor gebruikers die de optie hebben ingeschakeld en de pagina kunnen bewerken,
- Voegt bovenaan een inhoudstabel toe voor gebruikers die de optie hebben ingeschakeld, en
- geeft automatisch een anker aan koppen.
- Daarna,
parse()
roept vervolgensParser::doBlockLevels
aan, die lijsten van regels opbouwt die beginnen met ':', '*', '#', enz. Parser::replaceLinkHolders
wordt geroepen, dieLinkHolderArray::replace
op$Parser->mLinkHolders
aanroept om placeholders van een link te vervangen door werkelijke links, in de buffer Placeholders gecreëerd in Skin::makeLinkObj()- Vervolgens wordt de tekst in de taal omgezet (indien van toepassing) met behulp van de
convert
methode van het juiste Language object. Parser::replaceTransparentTags
wordt aangeroepen, waarbij transparante tags worden vervangen door waarden die worden geleverd door de callback-functies in$Parser->mTransparentTagHooks
. Transparante tag-hooks zijn vergelijkbaar met gewone XML-stijl tag-hooks, behalve dat ze laat in de transformatiesequentie werken, op HTML in plaats van wikitext.Sanitizer::normalizeCharReferences
wordt aangeroepen, wat ervoor zorgt dat alle entiteiten en tekenverwijzingen legaal zijn voor XML en XHTML specifiek.- Als HTML tidy is ingeschakeld, wordt
MWTidy::tidy
aangeroepen om het opruimen uit te voeren. - Ten slotte wordt het weergegeven HTML-resultaat van het parseproces opgeslagen in het
ParserOutput
object$Parser->mOutput
, dat teruggegeven wordt aan de aanroeper vanParser::parse
.
The following hooks are made available at various stages in the parsing cycle:
Versie | Hook | Beschrijving |
---|---|---|
1.5.0 | ParserAfterTidy | Gebruikt om een beetje verwerking toe te voegen aan de volledig opgebouwde pagina. |
1.6.0 | ParserBeforeInternalParse | |
1.6.0 | ParserClearState | Aangeroepen na Parser::clearState(). |
1.6.0 | ParserGetVariableValueSwitch | Kent een waarde toe aan een door de gebruiker gedefinieerde variabele. |
1.6.0 | ParserGetVariableValueTs | Wordt gebruikt om de waarde van de tijd voor het magische woord {{LOCAL...}} te wijzigen. |
1.6.0 | ParserGetVariableValueVarCache | Gebruikt om de waarde van de variabele cache te veranderen of false terug te geven om de cache niet te gebruiken. |
1.6.0 | ParserTestParser | Wordt aangeroepen bij het maken van een nieuw voorbeeld van Parser voor parser-testen. |
1.10.0 | InternalParseBeforeLinks | Gebruikt om de uitgebreide wiki-code te verwerken nadat <nowiki>, HTML-commentaren en sjablonen zijn behandeld. |
1.10.1 | BeforeParserFetchTemplateAndtitle | Staat een extensie toe om een versie van een pagina te specificeren om te worden opgenomen in een sjabloon. |
1.10.1 | BeforeParserrenderImageGallery | Staat een extensie toe een beeldgalerij te wijzigen voordat deze wordt opgebouwd om te tonen. |
1.12.0 | ParserFirstCallInit | Wordt aangeroepen als de parser voor het eerst wordt gebruikt, initialiseren. |
1.12.0 | ParserMakeImageParams | Verander de parameters die worden gebruikt om een afbeelding te genereren voordat deze wordt gegenereerd. |
1.18.0 | BeforeParserFetchFileAndTitle | Voordat Parser een afbeelding maakt. |
1.19.0 | ParserSectionCreate | Wordt elke keer aangeroepen dat de parser een documentsectie uit wikitext maakt. |
1.22.0 | ParserLimitReportFormat | Replacement for deprecated ParserLimitReport |
1.22.0 | ParserLimitReportPrepare | Replacement for deprecated ParserLimitReport |
1.36.0 | BeforeParserFetchTemplateRevisionRecord | Replacement for deprecated BeforeParserFetchTemplateAndtitle |
Andere methoden
Accessors
getCustomDefaultSort ()
Accessor voor $mDefaultSort. Anders dan getDefaultSort(), Het retourneert false als er geen is ingesteld.getDefaultSort ()
Accessor voor $mDefaultSort. Zal de lege tekenreeks gebruiken als er geen is ingesteld.getOptions ()
Haal het object ParserOptions op.getOutput ()
Haal het object ParserOutput op.getPreprocessor ()
Haal een object Preprocessor op.- Relating to revisions:
getRevisionId ()
Haal het ID van de revisie die we verwerken met de parser.getRevisionTimestamp ()
Haal het tijdstempel die wordt geassocieerd met de huidige revisie, aangepast voor het standaard server-lokale tijdstempel.getRevisionUser ()
Haal de naam van de gebruiker op die de laatste revisie heeft gemaakt door een bewerking te doen.
getTags ()
Accessor.getTargetLanguage ()
De doeltaal ophalen van de inhoud die wordt verwerkt door de parser.getTitle ()
Accessor voor het object Title .getUser ()
Haal een object User op uit $this->mUser, indien ingesteld, of anders uit het object van ParserOptions.
Set
Parser::setFunctionHook()
Maak een parser-functie , bijvoorbeeld{{#expr: 1 + 1}}
of{{sum:1|2|3}}
. De functie callback kan de vorm hebben:function myParserFunction( &$parser, $arg1, $arg2, $arg3 ) { ... }
.Parser::setHook()
Maak een HTML-stijl tag , bijv.<yourtag>speciale tekst</yourtag>
. De callback moet de volgende vorm hebben:function myParserHook( $text, $params, $parser, $frame ) { ...
}
Zie ook
- Manual:Code – Overview of the key files and directories in the MediaWiki source code
- Manual:ParserOptions.php
- Manual:PPFrame.php - expansion frame interface
Externe links
- ↑ Prior to MediaWiki 1.36, it was still possible to construct a Parser class directly.