![]() | This page isoutdated. For more complete information on current code, please refer tocorresponding class/file. If you have checked or updated this page and found the content to be suitable, please remove this notice. See thetalk page for a possible discussion on this. |
MediaWiki file: Parser.php | |
---|---|
Location: | includes/parser/ |
Source code: | master •1.44.0 •1.43.3 •1.39.13 |
Classes: | MediaWiki\Parser\Parser |
This file contains the classParser
, which contains the methodparse
, which convertsWikitext to HTML.
In many contexts, such as when creating a parser function or special page, you should have access to a Parser instance.
If you do not have access, you can create a new instance by usingParserFactory and calling itscreate
method.[1]The constructor of the ParserFactory takes several arguments.To create a ParserFactory with default options, useMediaWikiServices::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.
One-liner for getting the main Parser instance, though unsafe when the caller is not in a top-level context:
$localParser=MediaWikiServices::getInstance()->getParser();
Parser::internalParse()
, which in turns callsParser::replaceVariables
, which replaces magic variables, templates, and template arguments with the appropriate text.Parser::preprocessToDom
, which preprocesses some wikitext and returns the document tree.PPFrame
object and calls itsexpand()
method to do the actual template magic.Sanitizer::removeHTMLtags()
, which cleans up HTML, removes dangerous tags and attributes, and removes HTML comments.Parser::handleTables
, which handles and renders the wikitext for tables.Parser::handleDoubleUnderscore
, which removes validdouble-underscore items, like __NOTOC__, and records them in array$Parser->mDoubleUnderscores
.Parser::handleHeadings
, which parses and renders section headers.Parser::handleInternalLinks
, which processes internal links ([[ ]]
) and stores them in$Parser->mLinkHolders
(aLinkHolderArray
object),Parser::handleAllQuotes
, which replaces single quotes with HTML markup (<i>
,<b>
, etc).Parser::handleExternalLinks
, which replaces and renders external links.Parser::handleMagicLinks
, which replaces special strings like "ISBN xxx" and "RFC xxx" with magic external links.Parser::handleHeadings
, which:parse()
callsParser::doBlockLevels
, which renders lists from lines starting with ':', '*', '#', etc.Parser::replaceLinkHolders
is called, which callsLinkHolderArray::replace
on$Parser->mLinkHolders
to replace link placeholders with actual links, in the buffer Placeholders created in Skin::makeLinkObj()convert
method of the appropriateLanguage object.Parser::replaceTransparentTags
used to be called, which replaced transparent tags with values which are provided by the callback functions in$Parser->mTransparentTagHooks
. Transparent tag hooks are like regular XML-style tag hooks, except they operate late in the transformation sequence, on HTML instead of wikitext.Sanitizer::normalizeCharReferences
is called, which ensures that any entities and character references are legal for XML and XHTML specifically.MWTidy::tidy
is called to do the tidying.ParserOutput
object$Parser->mOutput
, which is returned to the caller ofParser::parse
.The following hooks are made available at various stages in the parsing cycle:
Version | Hook | Description |
---|---|---|
1.5.0 | ParserAfterTidy | Used to add some final processing to the fully-rendered page output. |
1.6.0 | ParserBeforeInternalParse | |
1.6.0 | ParserClearState | Called at the end of Parser::clearState(). |
1.6.0 | ParserGetVariableValueSwitch | Assigns a value to a user defined variable. |
1.6.0 | ParserGetVariableValueTs | Used to change the value of the time for the {{LOCAL...}} magic word. |
1.6.0 | ParserTestParser | Called when creating a new instance of Parser for parser tests. |
1.10.0 | InternalParseBeforeLinks | Used to process the expanded wiki code after <nowiki>, HTML-comments, and templates have been treated. |
1.10.1 | BeforeParserFetchTemplateAndtitle | Allows an extension to specify a version of a page to get for inclusion in a template. |
1.10.1 | BeforeParserrenderImageGallery | Allows an extension to modify an image gallery before it is rendered. |
1.12.0 | ParserFirstCallInit | Called when the parser initialises for the first time. |
1.12.0 | ParserMakeImageParams | Alter the parameters used to generate an image before it is generated. |
1.18.0 | BeforeParserFetchFileAndTitle | Before an image is rendered by Parser. |
1.19.0 | ParserSectionCreate | Called each time the parser creates a document section from wikitext. |
1.22.0 | ParserLimitReportFormat | Replacement for deprecated ParserLimitReport |
1.22.0 | ParserLimitReportPrepare | Replacement for deprecated ParserLimitReport |
1.36.0 | BeforeParserFetchTemplateRevisionRecord | Replacement for deprecated BeforeParserFetchTemplateAndtitle |
getCustomDefaultSort ()
Accessor for $mDefaultSort. Unlike getDefaultSort(), it will return false if none is set.getDefaultSort ()
Accessor for $mDefaultSort. Will use the empty string if none is set.getOptions ()
Get theParserOptions object.getOutput ()
Get theParserOutput object.getPreprocessor ()
Get aPreprocessor object.getRevisionId ()
Get the ID of the revision we are parsing.getRevisionTimestamp ()
Get the timestamp associated with the current revision, adjusted for the default server-local timestamp.getRevisionUser ()
Get the name of the user that edited the last revision.getTags ()
Accessor.getTargetLanguage ()
Get the target language for the content being parsed.getTitle ()
Accessor for theTitle object.getUser ()
Get aUser object either from $this->mUser, if set, or from the ParserOptions object otherwise.Parser::setFunctionHook()
Create a parser function, e.g.{{#expr: 1 + 1}}
or{{sum:1|2|3}}
. The callback function can have the form:function myParserFunction( &$parser, $arg1, $arg2, $arg3 ) { ... }
.Parser::setHook()
Create an HTML-style tag, e.g.<yourtag>special text</yourtag>
. The callback should have the following form:functionmyParserHook($text,$params,$parser,$frame){...
}Do not add class properties to the Parser that have not been declared by the Parser.Exceptions aside, dynamic properties are deprecated in PHP 8.2 and they may not sit well with the shift to parallellised envisaged forParsoid.If you are write an extension and need to store custom data in the Parser, seeextension data for one possible way out.