Manual:Parser.php

From MediaWiki.org
Jump to: navigation, search



Description[edit | edit source]

This file contains the class Parser, which contains the method parse, which converts Wikitext to HTML. It performs, among other things, the following actions:

  1. Call helper function Parser::internalParse(), which in turns calls
    1. Parser::replaceVariables, which replaces magic variables, templates, and template arguments with the appropriate text.
      1. It calls Parser::preprocessToDom, which preprocesses some wikitext and returns the document tree.
      2. Next it creates a PPFrame DOM object and calls its expand() method to do the actual template magic.
    2. Sanitizer::removeHTMLtags(), which cleans up HTML, removes dangerous tags and attributes, and removes HTML comments.
    3. Parser::doTableStuff, which handles and renders the wikitext for tables.
    4. Parser::doDoubleUnderscore, which removes valid double-underscore items, like __NOTOC__, and records them in array $Parser->mDoubleUnderscores.
    5. Parser::doHeadings, which parses and renders section headers.
    6. Parser::replaceInternalLinks, which processes internal links ([[ ]]) and stores them in $Parser->mLinkHolders (a LinkHolderArray object),
    7. Parser::doAllQuotes, which replaces single quotes with HTML markup (<i>, <b>, etc).
    8. Parser::replaceExternalLinks, which replaces and renders external links.
    9. Parser::doMagicLinks, which replaces special strings like "ISBN xxx" and "RFC xxx" with magic external links.
    10. Parser::formatHeadings, which:
      • auto numbers headings if that options is enabled,
      • adds an [edit] link to sections for users who have enabled the option and can edit the page,
      • adds a Table of contents on the top for users who have enabled the option, and
      • auto-anchors headings.
  2. Next, parse() calls Parser::doBlockLevels, which renders lists from lines starting with ':', '*', '#', etc.
  3. 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()
  4. Next, the text is language converted (when applicable) using the convert method of the appropriate Language object.
  5. Parser::replaceTransparentTags is called, which replaces 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.
  6. Sanitizer::normalizeCharReferences is called, which ensures that any entities and character references are legal for XML and XHTML specifically.
  7. If HTML tidy is enabled, MWTidy::tidy is called to do the tidying.
  8. Finally the rendered HTML result of the parse process is stored in the ParserOutput object $Parser->mOutput, which is returned to the caller of Parser::parse.

Hooks[edit | edit source]

Version Hook Description
1.5.0 ParserAfterStrip Deprecated in version 1.14.0.
1.5.0 ParserAfterTidy Used to add some final processing to the fully-rendered page output.
1.6.0 ParserBeforeInternalParse
1.5.0 ParserBeforeStrip Used to process the raw wiki code before any internal processing is applied.
1.5.0 ParserBeforeTidy Used to process the nearly-rendered HTML code for the page (but before any HTML tidying occurs).
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 ParserGetVariableValueVarCache Used to change the value of the variable cache or return false to not use it.
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 ParserLimitReport Called at the end of Parser::parse() when the parser will include comments about size of the text parsed.
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.

Accessors[edit | edit source]

  • getCustomDefaultSort () Accessor for $mDefaultSort Unlike getDefaultSort(), 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.

Set[edit | edit source]

  • Parser::setFunctionHook() Create a function, e.g. {{sum:1|2|3}} The callback function should have the form: function myParserFunction( &$parser, $arg1, $arg2, $arg3 ) { ... }
  • Parser::setFunctionTagHook() Create a tag function, e.g. <test>some stuff</test>. Unlike tag hooks, tag functions are parsed at preprocessor level. Unlike parser functions, their content is not preprocessed.
  • 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 ) { ... }

See also[edit | edit source]

External link[edit | edit source]

Language: English  • 日本語 • português do Brasil