Jump to content

Handboek:Parser.php

From mediawiki.org
This page is a translated version of the page Manual:Parser.php and the translation is 100% complete.

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

  1. Aanroep helper-functie Parser::internalParse(), die op zijn beurt aanroept
    1. Parser::replaceVariables, waarmee magische variabelen, sjablonen en sjabloonargumenten worden vervangen door de bijbehorende tekst.
      1. Het roept Parser::preprocessToDom aan, die wat wikitext vooraf verwerkt en de documentenboom teruggeeft.
      2. Vervolgens maakt het een PPFrame object aan en roept de expand() methode aan om de echte sjabloon magie te doen.
    2. Sanitizer::removeHTMLtags(), die HTML opschoont, gevaarlijke tags en attributen verwijdert en HTML-commentaren verwijdert.
    3. Parser::handleTables, die de wikitext voor tabellen behandelt en weergeeft.
    4. Parser::handleDoubleUnderscore, waarmee geldige items met dubbele onderstrepingsteken, zoals __NOTOC__, worden verwijderd en in array $Parser->mDoubleUnderscores worden vastgelegd.
    5. Parser::handleHeadings, die sectiekoppen analyseert en weergeeft.
    6. Parser::handleInternalLinks, die interne links verwerkt ([[ ]]) en ze opslaat in $Parser->mLinkHolders (een LinkHolderArray.html LinkHolderArlay object),
    7. Parser::handleAllQuotes, die enkele aanhalingstekens vervangt door HTML-markering (‎<i>, ‎<b>, enz.).
    8. Parser::handleExternalLinks, die externe links vervangt en opbouwt.
    9. Parser::handleMagicLinks, die speciale teksten zoals "ISBN xxx" en "RFC xxx" vervangt door magische externe links.
    10. 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.
  2. Daarna, parse() roept vervolgens Parser::doBlockLevels aan, die lijsten van regels opbouwt die beginnen met ':', '*', '#', enz.
  3. Parser::replaceLinkHolders wordt geroepen, die LinkHolderArray::replace op $Parser->mLinkHolders aanroept om placeholders van een link te vervangen door werkelijke links, in de buffer Placeholders gecreëerd in Skin::makeLinkObj()
  4. Vervolgens wordt de tekst in de taal omgezet (indien van toepassing) met behulp van de convert methode van het juiste Language object.
  5. 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.
  6. Sanitizer::normalizeCharReferences wordt aangeroepen, wat ervoor zorgt dat alle entiteiten en tekenverwijzingen legaal zijn voor XML en XHTML specifiek.
  7. Als HTML tidy is ingeschakeld, wordt MWTidy::tidy aangeroepen om het opruimen uit te voeren.
  8. Ten slotte wordt het weergegeven HTML-resultaat van het parseproces opgeslagen in het ParserOutput object $Parser->mOutput, dat teruggegeven wordt aan de aanroeper van Parser::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

  1. Prior to MediaWiki 1.36, it was still possible to construct a Parser class directly.