This page is
outdated.
For more complete information on current code, please refer to
corresponding class/file. If you have checked or updated this page and found the content to be suitable, please remove this notice. See the
talk pagefor a possible discussion on this.
This file contains the class Parser
, which contains the method parse
, which converts Wikitext to HTML.
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[edit]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.
How to get the main Parser instance[edit]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 calls
Parser::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 its expand()
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 valid double-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
(a LinkHolderArray
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()
calls Parser::doBlockLevels
, which renders lists from lines starting with ':', '*', '#', etc.Parser::replaceLinkHolders
is called, which calls LinkHolderArray::replace
on $Parser->mLinkHolders
to replace link placeholders with actual links, in the buffer Placeholders created in Skin::makeLinkObj()convert
method of the appropriate Language 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 of Parser::parse
.The following hooks are made available at various stages in the parsing cycle:
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 the ParserOptions object.getOutput ()
Get the ParserOutput object.getPreprocessor ()
Get a Preprocessor 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 the Title object.getUser ()
Get a User 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: function myParserHook( $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 for Parsoid . If you are write an extension and need to store custom data in the Parser, see extension data for one possible way out.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4