MediaWiki  master
Parser Class Reference

PHP Parser - Processes wiki markup (which uses a more user-friendly syntax, such as "[[link]]" for making links), and provides a one-way transformation of that wiki markup it into (X)HTML output / markup (which in turn the browser understands, and can display). More...

Collaboration diagram for Parser:

Public Member Functions

 __clone ()
 Allow extensions to clean up when the parser is cloned. More...
 
 __construct ( $svcOptions=null, MagicWordFactory $magicWordFactory=null, Language $contLang=null, ParserFactory $factory=null, $urlProtocols=null, SpecialPageFactory $spFactory=null, $linkRendererFactory=null, $nsInfo=null, $logger=null, BadFileLookup $badFileLookup=null)
 Constructing parsers directly is deprecated! Use a ParserFactory. More...
 
 __destruct ()
 Reduce memory usage to reduce the impact of circular references. More...
 
 addTrackingCategory ( $msg)
 
 areSubpagesAllowed ()
 Return true if subpage links should be expanded on this page. More...
 
 argSubstitution ( $piece, $frame)
 Triple brace replacement – used for template arguments. More...
 
 armorLinks ( $text)
 Insert a NOPARSE hacky thing into any inline links in a chunk that's going to go through further parsing steps before inline URL expansion. More...
 
 attributeStripCallback (&$text, $frame=false)
 Callback from the Sanitizer for expanding items found in HTML attribute values, so they can be safely tested and escaped. More...
 
 braceSubstitution ( $piece, $frame)
 Return the text of a template, after recursively replacing any variables or templates within the template. More...
 
 callParserFunction ( $frame, $function, array $args=[])
 Call a parser function and return an array with text and flags. More...
 
 cleanSig ( $text, $parsing=false)
 Clean up signature text. More...
 
 clearState ()
 Clear Parser state. More...
 
 clearTagHooks ()
 Remove all tag hooks. More...
 
 disableCache ()
 Set a flag in the output object indicating that the content is dynamic and shouldn't be cached. More...
 
 doAllQuotes ( $text)
 Replace single quotes with HTML markup. More...
 
 doBlockLevels ( $text, $linestart)
 Make lists from lines starting with ':', '*', '#', etc. More...
 
 doDoubleUnderscore ( $text)
 Strip double-underscore items like NOGALLERY and NOTOC Fills $this->mDoubleUnderscores, returns the modified text. More...
 
 doHeadings ( $text)
 Parse headers and return html. More...
 
 doMagicLinks ( $text)
 Replace special strings like "ISBN xxx" and "RFC xxx" with magic external links. More...
 
 doQuotes ( $text)
 Helper function for doAllQuotes() More...
 
 doTableStuff ( $text)
 parse the wiki syntax used to render tables More...
 
 enableOOUI ()
 Set's up the PHP implementation of OOUI for use in this request and instructs OutputPage to enable OOUI for itself. More...
 
 extensionSubstitution ( $params, $frame)
 Return the text to be used for a given extension tag. More...
 
 fetchCurrentRevisionOfTitle ( $title)
 Fetch the current revision of a given title. More...
 
 fetchFileAndTitle ( $title, $options=[])
 Fetch a file and its title and register a reference to it. More...
 
 fetchTemplate ( $title)
 Fetch the unparsed text of a template and register a reference to it. More...
 
 fetchTemplateAndTitle ( $title)
 Fetch the unparsed text of a template and register a reference to it. More...
 
 firstCallInit ()
 Do various kinds of initialisation on the first call of the parser. More...
 
 formatHeadings ( $text, $origText, $isMain=true)
 This function accomplishes several tasks: 1) Auto-number headings if that option is enabled 2) Add an [edit] link to sections for users who have enabled the option and can edit the page 3) Add a Table of contents on the top for users who have enabled the option 4) Auto-anchor headings. More...
 
 getContentLanguage ()
 Get the content language that this Parser is using. More...
 
 getConverterLanguage ()
 Get the language object for language conversion. More...
 
 getCustomDefaultSort ()
 Accessor for $mDefaultSort Unlike getDefaultSort(), will return false if none is set. More...
 
 getDefaultSort ()
 Accessor for $mDefaultSort Will use the empty string if none is set. More...
 
 getExternalLinkAttribs ( $url)
 Get an associative array of additional HTML attributes appropriate for a particular external link. More...
 
 getFreshParser ()
 Return this parser if it is not doing anything, otherwise get a fresh parser. More...
 
 getFunctionHooks ()
 Get all registered function hook identifiers. More...
 
 getFunctionLang ()
 Get a language object for use in parser functions such as {{FORMATNUM:}}. More...
 
 getFunctionSynonyms ()
 
 getImageParams ( $handler)
 
 getLinkRenderer ()
 Get a LinkRenderer instance to make links with. More...
 
 getMagicWordFactory ()
 Get the MagicWordFactory that this Parser is using. More...
 
 getOptions ()
 Get the ParserOptions object. More...
 
 getOutput ()
 Get the ParserOutput object. More...
 
 getPreloadText ( $text, Title $title, ParserOptions $options, $params=[])
 Process the wikitext for the "?preload=" feature. More...
 
 getPreprocessor ()
 Get a preprocessor object. More...
 
 getRevisionId ()
 Get the ID of the revision we are parsing. More...
 
 getRevisionObject ()
 Get the revision object for $this->mRevisionId. More...
 
 getRevisionSize ()
 Get the size of the revision. More...
 
 getRevisionTimestamp ()
 Get the timestamp associated with the current revision, adjusted for the default server-local timestamp. More...
 
 getRevisionUser ()
 Get the name of the user that edited the last revision. More...
 
 getSection ( $text, $sectionId, $defaultText='')
 This function returns the text of a section, specified by a number ($section). More...
 
 getStripList ()
 Get a list of strippable XML-like elements. More...
 
 getStripState ()
 Get the StripState. More...
 
 getTags ()
 Accessor. More...
 
 getTargetLanguage ()
 Get the target language for the content being parsed. More...
 
 getTemplateDom ( $title)
 Get the semi-parsed DOM representation of a template with a given title, and its redirect destination title. More...
 
 getTitle ()
 Accessor for the Title object. More...
 
 getUrlProtocols ()
 
 getUser ()
 Get a User object either from $this->mUser, if set, or from the ParserOptions object otherwise. More...
 
 getUserSig (&$user, $nickname=false, $fancySig=null)
 Fetch the user's signature text, if any, and normalize to validated, ready-to-insert wikitext. More...
 
 getVariableValue ( $index, $frame=false)
 Return value of a magic variable (like PAGENAME) More...
 
 guessLegacySectionNameFromWikiText ( $text)
 Same as guessSectionNameFromWikiText(), but produces legacy anchors instead, if possible. More...
 
 guessSectionNameFromWikiText ( $text)
 Try to guess the section anchor name based on a wikitext fragment presumably extracted from a heading, for example "Header" from "== Header ==". More...
 
 incrementExpensiveFunctionCount ()
 Increment the expensive function count. More...
 
 incrementIncludeSize ( $type, $size)
 Increment an include size counter. More...
 
 initialiseVariables ()
 initialise the magic variables (like CURRENTMONTHNAME) and substitution modifiers More...
 
 insertStripItem ( $text)
 Add an item to the strip state Returns the unique tag which must be inserted into the stripped text The tag will be replaced with the original text in unstrip() More...
 
 internalParse ( $text, $isMain=true, $frame=false)
 Helper function for parse() that transforms wiki markup into half-parsed HTML. More...
 
 interwikiTransclude ( $title, $action)
 Transclude an interwiki link. More...
 
 isCurrentRevisionOfTitleCached ( $title)
 
 isValidHalfParsedText ( $data)
 Returns true if the given array, presumed to be generated by serializeHalfParsedText(), is compatible with the current version of the parser. More...
 
 killMarkers ( $text)
 Remove any strip markers found in the given text. More...
 
 limitationWarn ( $limitationType, $current='', $max='')
 Warn the user when a parser limitation is reached Will warn at most once the user per limitation type. More...
 
 magicLinkCallback ( $m)
 
 makeFreeExternalLink ( $url, $numPostProto)
 Make a free external link, given a user-supplied URL. More...
 
 makeImage ( $title, $options, $holders=false)
 Parse image options text and use it to make an image. More...
 
 markerSkipCallback ( $s, $callback)
 Call a callback function on all regions of the given text that are not inside strip markers, and replace those regions with the return value of the callback. More...
 
 maybeDoSubpageLink ( $target, &$text)
 Handle link to subpage if necessary. More...
 
 nextLinkID ()
 
 Options ( $x=null)
 Accessor/mutator for the ParserOptions object. More...
 
 OutputType ( $x=null)
 Accessor/mutator for the output type. More...
 
 parse ( $text, Title $title, ParserOptions $options, $linestart=true, $clearState=true, $revid=null)
 Convert wikitext to HTML Do not call this function recursively. More...
 
 parseExtensionTagAsTopLevelDoc ( $text)
 Needed by Parsoid/PHP to ensure all the hooks for extensions are run in the right order. More...
 
 parseLinkParameter ( $value)
 Parse the value of 'link' parameter in image syntax ([[File:Foo.jpg|link=<value>]]). More...
 
 preprocess ( $text, ?Title $title, ParserOptions $options, $revid=null, $frame=false)
 Expand templates and variables in the text, producing valid, static wikitext. More...
 
 preprocessToDom ( $text, $flags=0)
 Preprocess some wikitext and return the document tree. More...
 
 preSaveTransform ( $text, Title $title, User $user, ParserOptions $options, $clearState=true)
 Transform wiki markup when saving a page by doing "\\r\\n" -> "\\n" conversion, substituting signatures, {{subst:}} templates, etc. More...
 
 recursivePreprocess ( $text, $frame=false)
 Recursive parser entry point that can be called from an extension tag hook. More...
 
 recursiveTagParse ( $text, $frame=false)
 Half-parse wikitext to half-parsed HTML. More...
 
 recursiveTagParseFully ( $text, $frame=false)
 Fully parse wikitext to fully parsed HTML. More...
 
 renderImageGallery ( $text, $params)
 Renders an image gallery from a text with one line per image. More...
 
 replaceExternalLinks ( $text)
 Replace external links (REL) More...
 
 replaceInternalLinks ( $s)
 Process [[ ]] wikilinks. More...
 
 replaceInternalLinks2 (&$s)
 Process [[ ]] wikilinks (RIL) More...
 
 replaceLinkHolders (&$text, $options=0)
 Replace "<!--LINK-->" link placeholders with actual links, in the buffer Placeholders created in Linker::link() More...
 
 replaceLinkHoldersText ( $text)
 Replace "<!--LINK-->" link placeholders with plain text of links (not HTML-formatted). More...
 
 replaceSection ( $oldText, $sectionId, $newText)
 This function returns $oldtext after the content of the section specified by $section has been replaced with $text. More...
 
 replaceTransparentTags ( $text)
 Replace transparent tags in $text with the values given by the callbacks. More...
 
 replaceVariables ( $text, $frame=false, $argsOnly=false)
 Replace magic variables, templates, and template arguments with the appropriate text. More...
 
 resetOutput ()
 Reset the ParserOutput. More...
 
 serializeHalfParsedText ( $text)
 Save the parser state required to convert the given half-parsed text to HTML. More...
 
 setDefaultSort ( $sort)
 Mutator for $mDefaultSort. More...
 
 setFunctionHook ( $id, callable $callback, $flags=0)
 Create a function, e.g. More...
 
 setFunctionTagHook ( $tag, callable $callback, $flags)
 Create a tag function, e.g. More...
 
 setHook ( $tag, callable $callback)
 Create an HTML-style tag, e.g. More...
 
 setLinkID ( $id)
 
 setOutputType ( $ot)
 Set the output type. More...
 
 setTitle (Title $t=null)
 Set the context title. More...
 
 setTransparentTagHook ( $tag, callable $callback)
 As setHook(), but letting the contents be parsed. More...
 
 setUser ( $user)
 Set the current user. More...
 
 startExternalParse (?Title $title, ParserOptions $options, $outputType, $clearState=true, $revId=null)
 Set up some variables which are usually set up in parse() so that an external function can call some class members with confidence. More...
 
 stripSectionName ( $text)
 Strips a text string of wikitext for use in a section anchor. More...
 
 testPreprocess ( $text, Title $title, ParserOptions $options)
 
 testPst ( $text, Title $title, ParserOptions $options)
 
 testSrvus ( $text, Title $title, ParserOptions $options, $outputType=self::OT_HTML)
 strip/replaceVariables/unstrip for preprocessor regression testing More...
 
 Title (Title $x=null)
 Accessor/mutator for the Title object. More...
 
 transformMsg ( $text, $options, $title=null)
 Wrapper for preprocess() More...
 
 unserializeHalfParsedText ( $data)
 Load the parser state given in the $data array, which is assumed to have been generated by serializeHalfParsedText(). More...
 
 validateSig ( $text)
 Check that the user's signature contains no bad XML. More...
 

Static Public Member Functions

static cleanSigInSig ( $text)
 Strip 3, 4 or 5 tildes out of signatures. More...
 
static createAssocArgs ( $args)
 Clean up argument array - refactored in 1.9 so parserfunctions can use it, too. More...
 
static extractTagsAndParams ( $elements, $text, &$matches)
 Replaces all occurrences of HTML-style comments and the given tags in the text with a random marker and returns the next text. More...
 
static getDefaultPreprocessorClass ()
 Which class should we use for the preprocessor if not otherwise specified? More...
 
static getExternalLinkRel ( $url=false, $title=null)
 Get the rel attribute for a particular external link. More...
 
static guessSectionNameFromStrippedText ( $text)
 Like guessSectionNameFromWikiText(), but takes already-stripped text as input. More...
 
static normalizeLinkUrl ( $url)
 Replace unusual escape codes in a URL with their equivalent characters. More...
 
static parseWidthParam ( $value, $parseHeight=true)
 Parsed a width param of imagelink like 300px or 200x300px. More...
 
static splitWhitespace ( $s)
 Return a three-element array: leading whitespace, string contents, trailing whitespace. More...
 
static statelessFetchRevision (Title $title, $parser=false)
 Wrapper around Revision::newFromTitle to allow passing additional parameters without passing them on to it. More...
 
static statelessFetchTemplate ( $title, $parser=false)
 Static function to get a template Can be overridden via ParserOptions::setTemplateCallback(). More...
 
static stripOuterParagraph ( $html)
 Strip outer. More...
 

Public Attributes

MapCacheLRU null $currentRevisionCache
 
 $mAutonumber
 
array $mConf
 
 $mDefaultSort
 
 $mDefaultStripList = []
 
 $mDoubleUnderscores
 
 $mExpensiveFunctionCount
 
 $mExtLinkBracketedRegex
 
bool $mFirstCall = true
 Whether firstCallInit still needs to be called. More...
 
 $mForceTocPosition
 
 $mFunctionHooks = []
 
 $mFunctionSynonyms = [ 0 => []
 
 $mFunctionTagHooks = []
 
 $mGeneratedPPNodeCount
 
 $mHeadings
 
 $mHighestExpansionDepth
 
 $mImageParams = []
 
 $mImageParamsMagicArray = []
 
 $mIncludeCount
 
 $mIncludeSizes
 
bool string $mInParse = false
 Recursive call protection. More...
 
 $mInputSize = false
 
array $mLangLinkLanguages
 Array with the language name of each language link (i.e. More...
 
LinkHolderArray $mLinkHolders
 
 $mLinkID
 
 $mMarkerIndex = 0
 
ParserOptions $mOptions
 
ParserOutput $mOutput
 
 $mOutputType
 
 $mPPNodeCount
 
Preprocessor $mPreprocessor
 
 $mRevIdForTs
 
 $mRevisionId
 
 $mRevisionObject
 
 $mRevisionSize
 
 $mRevisionTimestamp
 
 $mRevisionUser
 
 $mShowToc
 
 $mStripList = []
 
StripState $mStripState
 
MagicWordArray $mSubstWords
 
 $mTagHooks = []
 
Title null $mTitle
 Since 1.34, leaving mTitle uninitialized or setting mTitle to null is deprecated. More...
 
array $mTplDomCache
 
 $mTplRedirCache
 
 $mTransparentTagHooks = []
 
 $mUrlProtocols
 
User $mUser
 
 $mVarCache = []
 
MagicWordArray $mVariables
 
 $ot
 
const EXT_IMAGE_REGEX
 
const EXT_LINK_ADDR = '(?:[0-9.]+|\\[(?i:[0-9a-f:.]+)\\]|[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}])'
 
const EXT_LINK_URL_CLASS = '[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}]'
 
const HALF_PARSED_VERSION = 2
 Update this version number when the output of serialiseHalfParsedText() changes in an incompatible way. More...
 
const MARKER_PREFIX = "\x7f'\"`UNIQ-"
 
const OT_HTML = 1
 
const OT_MSG = 3
 
const OT_PLAIN = 4
 
const OT_PREPROCESS = 3
 
const OT_WIKI = 2
 
const PTD_FOR_INCLUSION = 1
 
const SFH_NO_HASH = 1
 
const SFH_OBJECT_ARGS = 2
 
const SPACE_NOT_NL = '(?:\t|&nbsp;|&\#0*160;|&\#[Xx]0*[Aa]0;|\p{Zs})'
 
const TOC_END = '</mw:toc>'
 
const TOC_START = '<mw:toc>'
 
const VERSION = '1.6.4'
 Update this version number when the ParserOutput format changes in an incompatible way, so the parser cache can automatically discard old data. More...
 

Protected Member Functions

 fetchFileNoRegister ( $title, $options=[])
 Helper function for fetchFileAndTitle. More...
 
 lock ()
 Lock the current instance of the parser. More...
 
 makeKnownLinkHolder ( $nt, $text='', $trail='', $prefix='')
 Render a forced-blue link inline; protect against double expansion of URLs if we're in a mode that prepends full URL prefixes to internal links. More...
 
 makeLimitReport ()
 Set the limit report data in the current ParserOutput, and return the limit report HTML comment. More...
 
 setOutputFlag ( $flag, $reason)
 
 stripAltText ( $caption, $holders)
 

Protected Attributes

LinkRenderer $mLinkRenderer
 
SectionProfiler $mProfiler
 

Private Member Functions

 extractSections ( $text, $sectionId, $mode, $newText='')
 Break wikitext input into sections, and either pull or replace some particular section's text. More...
 
 getRevisionTimestampSubstring ( $start, $len, $mtts, $variable)
 
 internalParseHalfParsed ( $text, $isMain=true, $linestart=true)
 Helper function for parse() that transforms half-parsed HTML into fully parsed HTML. More...
 
 makeLegacyAnchor ( $sectionName)
 
 maybeMakeExternalImage ( $url)
 make an image if it's allowed, either through the global option, through the exception, or through the on-wiki whitelist More...
 
 pstPass2 ( $text, $user)
 Pre-save transform helper function. More...
 
 startParse (?Title $title, ParserOptions $options, $outputType, $clearState=true)
 

Static Private Member Functions

static getSectionNameFromStrippedText ( $text)
 
static makeAnchor ( $sectionName)
 
static normalizeSectionName ( $text)
 Apply the same normalization as code making links to this section would. More...
 
static normalizeUrlComponent ( $component, $unsafe)
 

Private Attributes

BadFileLookup $badFileLookup
 
Language $contLang
 
ParserFactory $factory
 
LinkRendererFactory $linkRendererFactory
 
LoggerInterface $logger
 
MagicWordFactory $magicWordFactory
 
NamespaceInfo $nsInfo
 
SpecialPageFactory $specialPageFactory
 
ServiceOptions $svcOptions
 This is called $svcOptions instead of $options like elsewhere to avoid confusion with $mOptions, which is public and widely used, and also with the local variable $options used for ParserOptions throughout this file. More...
 

Detailed Description

PHP Parser - Processes wiki markup (which uses a more user-friendly syntax, such as "[[link]]" for making links), and provides a one-way transformation of that wiki markup it into (X)HTML output / markup (which in turn the browser understands, and can display).

There are seven main entry points into the Parser class:

Warning
$wgUser or $wgTitle or $wgRequest or $wgLang. Keep them away!
Settings:
$wgNamespacesWithSubpages
Settings only within ParserOptions:
$wgAllowExternalImages $wgAllowSpecialInclusion $wgInterwikiMagic $wgMaxArticleSize

Definition at line 74 of file Parser.php.

Constructor & Destructor Documentation

◆ __construct()

Parser::__construct (   $svcOptions = null,
MagicWordFactory  $magicWordFactory = null,
Language  $contLang = null,
ParserFactory  $factory = null,
  $urlProtocols = null,
SpecialPageFactory  $spFactory = null,
  $linkRendererFactory = null,
  $nsInfo = null,
  $logger = null,
BadFileLookup  $badFileLookup = null 
)

Constructing parsers directly is deprecated! Use a ParserFactory.

Parameters
ServiceOptions | null$svcOptions
MagicWordFactory | null$magicWordFactory
Language | null$contLangContent language
ParserFactory | null$factory
string | null$urlProtocolsAs returned from wfUrlProtocols()
SpecialPageFactory | null$spFactory
LinkRendererFactory | null$linkRendererFactory
NamespaceInfo | null$nsInfo
LoggerInterface | null$logger
BadFileLookup | null$badFileLookup

Definition at line 350 of file Parser.php.

References $svcOptions, MediaWiki\Config\ServiceOptions\assertRequiredOptions(), MediaWiki\Config\ServiceOptions\get(), and wfUrlProtocols().

◆ __destruct()

Parser::__destruct ( )

Reduce memory usage to reduce the impact of circular references.

Definition at line 414 of file Parser.php.

Member Function Documentation

◆ __clone()

Parser::__clone ( )

Allow extensions to clean up when the parser is cloned.

Definition at line 428 of file Parser.php.

References Hooks\run().

◆ addTrackingCategory()

Parser::addTrackingCategory (   $msg)
See also
ParserOutput::addTrackingCategory()
Parameters
string$msgMessage key
Returns
bool Whether the addition was successful

Definition at line 4285 of file Parser.php.

Referenced by braceSubstitution(), doDoubleUnderscore(), limitationWarn(), magicLinkCallback(), and makeImage().

◆ areSubpagesAllowed()

Parser::areSubpagesAllowed ( )

Return true if subpage links should be expanded on this page.

Returns
bool

Definition at line 2669 of file Parser.php.

Referenced by replaceInternalLinks2().

◆ argSubstitution()

Parser::argSubstitution (   $piece,
  $frame 
)

Triple brace replacement – used for template arguments.

Access:
private
Parameters
array$piece
PPFrame$frame
Returns
array

Definition at line 4051 of file Parser.php.

References incrementIncludeSize(), and limitationWarn().

◆ armorLinks()

Parser::armorLinks (   $text)

Insert a NOPARSE hacky thing into any inline links in a chunk that's going to go through further parsing steps before inline URL expansion.

Not needed quite as much as it used to be since free links are a bit more sensible these days. But bracketed links are still an issue.

Parameters
string$textMore-or-less HTML
Returns
string Less-or-more HTML with NOPARSE bits

Definition at line 2660 of file Parser.php.

Referenced by makeKnownLinkHolder(), and replaceInternalLinks2().

◆ attributeStripCallback()

Parser::attributeStripCallback ( $text,
  $frame = false 
)

Callback from the Sanitizer for expanding items found in HTML attribute values, so they can be safely tested and escaped.

Parameters
string&$text
bool | PPFrame$frame
Returns
string

Definition at line 5745 of file Parser.php.

References replaceVariables().

◆ braceSubstitution()

Parser::braceSubstitution (   $piece,
  $frame 
)

Return the text of a template, after recursively replacing any variables or templates within the template.

Parameters
array$pieceThe parts of the template $piece['title']: the title, i.e. the part before the | $piece['parts']: the parameter array $piece['lineStart']: whether the brace was at the start of a line
PPFrame$frameThe current frame, contains template arguments
Exceptions
Exception
Returns
string|array The text of the template

Definition at line 3269 of file Parser.php.

References $args, $context, $title, addTrackingCategory(), callParserFunction(), getLinkRenderer(), getTargetLanguage(), getTemplateDom(), getUser(), getVariableValue(), incrementIncludeSize(), insertStripItem(), interwikiTransclude(), limitationWarn(), maybeDoSubpageLink(), User\newFromName(), Title\newFromText(), NS_TEMPLATE, preprocessToDom(), PPFrame\RECOVER_ORIG, PPFrame\STRIP_COMMENTS, wfEscapeWikiText(), and wfMessage().

◆ callParserFunction()

Parser::callParserFunction (   $frame,
  $function,
array  $args = [] 
)

Call a parser function and return an array with text and flags.

The returned array will always contain a boolean 'found', indicating whether the parser function was found or not. It may also contain the following: text: string|object, resulting wikitext or PP DOM object isHTML: bool, $text is HTML, armour it against wikitext transformation isChildObj: bool, $text is a DOM node needing expansion in a child frame isLocalObj: bool, $text is a DOM node needing expansion in the current frame nowiki: bool, wiki markup in $text should be escaped

Since
1.21
Parameters
PPFrame$frameThe current frame, contains template arguments
string$functionFunction name
array$argsArguments to the function
Exceptions
MWException
Returns
array

Definition at line 3621 of file Parser.php.

References $args, preprocessToDom(), and SFH_OBJECT_ARGS.

Referenced by braceSubstitution().

◆ cleanSig()

Parser::cleanSig (   $text,
  $parsing = false 
)

Clean up signature text.

1) Strip 3, 4 or 5 tildes out of signatures

See also
cleanSigInSig 2) Substitute all transclusions
Parameters
string$text
bool$parsingWhether we're cleaning (preferences save) or parsing
Returns
string Signature text

Definition at line 4877 of file Parser.php.

References $wgTitle, getPreprocessor(), lock(), OT_PREPROCESS, preprocessToDom(), and startParse().

Referenced by getUserSig().

◆ cleanSigInSig()

static Parser::cleanSigInSig (   $text)
static

Strip 3, 4 or 5 tildes out of signatures.

Parameters
string$text
Returns
string Signature text with /~{3,5}/ removed

Definition at line 4914 of file Parser.php.

Referenced by MediaWiki\Preferences\DefaultPreferencesFactory\cleanSignature().

◆ clearState()

Parser::clearState ( )

Clear Parser state.

Access:
private

Definition at line 482 of file Parser.php.

References firstCallInit(), resetOutput(), and Hooks\run().

Referenced by startParse().

◆ clearTagHooks()

Parser::clearTagHooks ( )

Remove all tag hooks.

Definition at line 5052 of file Parser.php.

References $mDefaultStripList.

◆ createAssocArgs()

static Parser::createAssocArgs (   $args)
static

Clean up argument array - refactored in 1.9 so parserfunctions can use it, too.

Parameters
array$args
Returns
array

Definition at line 3199 of file Parser.php.

References $args.

◆ disableCache()

Parser::disableCache ( )

Set a flag in the output object indicating that the content is dynamic and shouldn't be cached.

Deprecated:
since 1.28; use getOutput()->updateCacheExpiry()

Definition at line 5728 of file Parser.php.

◆ doAllQuotes()

Parser::doAllQuotes (   $text)

Replace single quotes with HTML markup.

Parameters
string$text
Returns
string The altered text

Definition at line 1841 of file Parser.php.

References $line, $lines, doQuotes(), and StringUtils\explode().

Referenced by internalParse().

◆ doBlockLevels()

Parser::doBlockLevels (   $text,
  $linestart 
)

Make lists from lines starting with ':', '*', '#', etc.

(DBL)

Parameters
string$text
bool$linestartWhether or not this is at the start of a line.
Returns
string The lists rendered as HTML

Definition at line 2694 of file Parser.php.

References BlockLevelPass\doBlockLevels().

Referenced by internalParseHalfParsed().

◆ doDoubleUnderscore()

Parser::doDoubleUnderscore (   $text)

Strip double-underscore items like NOGALLERY and NOTOC Fills $this->mDoubleUnderscores, returns the modified text.

Parameters
string$text
Returns
string

Definition at line 4232 of file Parser.php.

References addTrackingCategory(), and NS_CATEGORY.

Referenced by internalParse().

◆ doHeadings()

Parser::doHeadings (   $text)

Parse headers and return html.

Parameters
string$text
Returns
string

Definition at line 1823 of file Parser.php.

Referenced by internalParse().

◆ doMagicLinks()

Parser::doMagicLinks (   $text)

Replace special strings like "ISBN xxx" and "RFC xxx" with magic external links.

DML

Access:
private
Parameters
string$text
Returns
string

Definition at line 1645 of file Parser.php.

References wfUrlProtocolsWithoutProtRel().

Referenced by internalParse().

◆ doQuotes()

Parser::doQuotes (   $text)

Helper function for doAllQuotes()

Parameters
string$text
Returns
string

Definition at line 1858 of file Parser.php.

Referenced by doAllQuotes(), and stripSectionName().

◆ doTableStuff()

Parser::doTableStuff (   $text)

parse the wiki syntax used to render tables

Access:
private
Parameters
string$text
Returns
string

Definition at line 1266 of file Parser.php.

References $line, $lines, $matches, StringUtils\explode(), Sanitizer\fixTagAttributes(), and StringUtils\replaceMarkup().

Referenced by internalParse().

◆ enableOOUI()

Parser::enableOOUI ( )

Set's up the PHP implementation of OOUI for use in this request and instructs OutputPage to enable OOUI for itself.

Since
1.26

Definition at line 6535 of file Parser.php.

References OutputPage\setupOOUI().

◆ extensionSubstitution()

Parser::extensionSubstitution (   $params,
  $frame 
)

Return the text to be used for a given extension tag.

This is the ghost of strip().

Parameters
array$paramsAssociative array of parameters: name PPNode for the tag name attr PPNode for unparsed text where tag attributes are thought to be attributes Optional associative array of parsed attributes inner Contents of extension element noClose Original text did not have a close tag
PPFrame$frame
Exceptions
MWException
Returns
string

Definition at line 4103 of file Parser.php.

References $content, and Sanitizer\decodeTagAttributes().

◆ extractSections()

Parser::extractSections (   $text,
  $sectionId,
  $mode,
  $newText = '' 
)
private

Break wikitext input into sections, and either pull or replace some particular section's text.

External callers should use the getSection and replaceSection methods.

Parameters
string$textPage wikitext
string | int$sectionIdA section identifier string of the form: "<flag1> - <flag2> - ... - <section number>"

Currently the only recognised flag is "T", which means the target section number was derived during a template inclusion parse, in other words this is a template section edit link. If no flags are given, it was an ordinary section edit link. This flag is required to avoid a section numbering mismatch when a section is enclosed by "<includeonly>" (T8563).

The section number 0 pulls the text before the first heading; other numbers will pull the given section along with its lower-level subsections. If the section is not found, $mode=get will return $newtext, and $mode=replace will return $text.

Section 0 is always considered to exist, even if it only contains the empty string. If $text is the empty string and section 0 is replaced, $newText is returned.

Parameters
string$modeOne of "get" or "replace"
string$newTextReplacement text for section data.
Returns
string For "get", the extracted section text. for "replace", the whole page with the section replaced.

Definition at line 5843 of file Parser.php.

References $wgTitle, getPreprocessor(), lock(), OT_PLAIN, preprocessToDom(), PPFrame\RECOVER_ORIG, and startParse().

Referenced by getSection(), and replaceSection().

◆ extractTagsAndParams()

static Parser::extractTagsAndParams (   $elements,
  $text,
$matches 
)
static

Replaces all occurrences of HTML-style comments and the given tags in the text with a random marker and returns the next text.

The output parameter $matches will be an associative array filled with data in the form:

'UNIQ-xxxxx' => [
'element',
'tag content',
[ 'param' => 'x' ],
'<element param="x">tag content</element>' ]
Parameters
array$elementsList of element names. Comments are always extracted.
string$textSource text string.
array&$matchesOut parameter, Array: extracted tags
Returns
string Stripped text

Definition at line 1167 of file Parser.php.

References $content, $matches, and Sanitizer\decodeTagAttributes().

◆ fetchCurrentRevisionOfTitle()

Parser::fetchCurrentRevisionOfTitle (   $title)

Fetch the current revision of a given title.

Note that the revision (and even the title) may not exist in the database, so everything contributing to the output of the parser should use this method where possible, rather than getting the revisions themselves. This method also caches its results, so using it benefits performance.

Since
1.24
Parameters
Title$title
Returns
Revision

Definition at line 3756 of file Parser.php.

References $title.

◆ fetchFileAndTitle()

Parser::fetchFileAndTitle (   $title,
  $options = [] 
)

Fetch a file and its title and register a reference to it.

If 'broken' is a key in $options then the file will appear as a broken thumbnail.

Parameters
Title$title
array$optionsArray of options to RepoGroup::findFile
Returns
array ( File or false, Title of file )

Definition at line 3939 of file Parser.php.

References $file, $title, and fetchFileNoRegister().

Referenced by makeImage(), and replaceInternalLinks2().

◆ fetchFileNoRegister()

Parser::fetchFileNoRegister (   $title,
  $options = [] 
)
protected

Helper function for fetchFileAndTitle.

Also useful if you need to fetch a file but not use it yet, for example to get the file's handler.

Parameters
Title$title
array$optionsArray of options to RepoGroup::findFile
Returns
File|bool

Definition at line 3964 of file Parser.php.

References $file, $title, and RepoGroup\singleton().

Referenced by fetchFileAndTitle(), and renderImageGallery().

◆ fetchTemplate()

Parser::fetchTemplate (   $title)

Fetch the unparsed text of a template and register a reference to it.

Parameters
Title$title
Returns
string|bool

Definition at line 3830 of file Parser.php.

References $title, and fetchTemplateAndTitle().

◆ fetchTemplateAndTitle()

Parser::fetchTemplateAndTitle (   $title)

Fetch the unparsed text of a template and register a reference to it.

Parameters
Title$title
Returns
array ( string or false, Title )

Definition at line 3802 of file Parser.php.

References $title, getOutput(), getTitle(), and setOutputFlag().

Referenced by fetchTemplate(), and getTemplateDom().

◆ firstCallInit()

Parser::firstCallInit ( )

Do various kinds of initialisation on the first call of the parser.

Definition at line 462 of file Parser.php.

References initialiseVariables(), CoreTagHooks\register(), CoreParserFunctions\register(), and Hooks\run().

Referenced by clearState(), getFunctionHooks(), getFunctionSynonyms(), and getTags().

◆ formatHeadings()

Parser::formatHeadings (   $text,
  $origText,
  $isMain = true 
)

This function accomplishes several tasks: 1) Auto-number headings if that option is enabled 2) Add an [edit] link to sections for users who have enabled the option and can edit the page 3) Add a Table of contents on the top for users who have enabled the option 4) Auto-anchor headings.

It loops through all headlines, collects the necessary data, then splits up the string and re-inserts the newly formatted headlines.

Parameters
string$text
string$origTextOriginal, untouched wikitext
bool$isMain
Returns
mixed|string
Access:
private

Definition at line 4305 of file Parser.php.

References $matches, $mOutputType, Sanitizer\decodeCharReferences(), Html\element(), Sanitizer\escapeIdForAttribute(), Sanitizer\escapeIdForLink(), getPreprocessor(), getTargetLanguage(), Sanitizer\ID_FALLBACK, Sanitizer\ID_PRIMARY, Linker\makeHeadline(), Sanitizer\normalizeSectionNameWhitespace(), OT_WIKI, preprocessToDom(), PPFrame\RECOVER_ORIG, replaceLinkHoldersText(), Hooks\run(), setOutputType(), Linker\tocIndent(), Linker\tocLine(), Linker\tocLineEnd(), Linker\tocList(), and Linker\tocUnindent().

Referenced by internalParse().

◆ getContentLanguage()

Parser::getContentLanguage ( )

Get the content language that this Parser is using.

Since
1.32
Returns
Language

Definition at line 1144 of file Parser.php.

References $contLang.

Referenced by statelessFetchTemplate().

◆ getConverterLanguage()

Parser::getConverterLanguage ( )

Get the language object for language conversion.

Deprecated:
since 1.32, just use getTargetLanguage()
Returns
Language|null

Definition at line 1080 of file Parser.php.

References getTargetLanguage().

◆ getCustomDefaultSort()

Parser::getCustomDefaultSort ( )

Accessor for $mDefaultSort Unlike getDefaultSort(), will return false if none is set.

Returns
string|bool

Definition at line 6147 of file Parser.php.

References $mDefaultSort.

◆ getDefaultPreprocessorClass()

static Parser::getDefaultPreprocessorClass ( )
static

Which class should we use for the preprocessor if not otherwise specified?

Since
1.34
Deprecated:
since 1.34, removing configurability of preprocessor
Returns
string

Definition at line 455 of file Parser.php.

Referenced by ParserFactory\__construct().

◆ getDefaultSort()

Parser::getDefaultSort ( )

Accessor for $mDefaultSort Will use the empty string if none is set.

This value is treated as a prefix, so the empty string is equivalent to sorting by page name.

Returns
string

Definition at line 6133 of file Parser.php.

References $mDefaultSort.

Referenced by replaceInternalLinks2().

◆ getExternalLinkAttribs()

Parser::getExternalLinkAttribs (   $url)

Get an associative array of additional HTML attributes appropriate for a particular external link.

This currently may include rel => nofollow (depending on configuration, namespace, and the URL's domain) and/or a target attribute (depending on configuration).

Parameters
string$urlURL to extract the domain from for rel => nofollow if appropriate
Returns
array Associative array of HTML attributes

Definition at line 2144 of file Parser.php.

Referenced by makeFreeExternalLink(), and replaceExternalLinks().

◆ getExternalLinkRel()

static Parser::getExternalLinkRel (   $url = false,
  $title = null 
)
static

Get the rel attribute for a particular external link.

Since
1.21
Parameters
string | bool$urlOptional URL, to extract the domain from for rel => nofollow if appropriate
LinkTarget | null$titleOptional LinkTarget, for wgNoFollowNsExceptions lookups
Returns
string|null Rel attribute for $url

Definition at line 2123 of file Parser.php.

References $title, $wgNoFollowDomainExceptions, $wgNoFollowLinks, $wgNoFollowNsExceptions, and wfMatchesDomainList().

Referenced by Linker\makeExternalLink().

◆ getFreshParser()

Parser::getFreshParser ( )

Return this parser if it is not doing anything, otherwise get a fresh parser.

You can use this method by doing $newParser = $oldParser->getFreshParser(), or more simply $oldParser->getFreshParser()->parse( ... ); if you're unsure if $oldParser is safe to use.

Since
1.24
Returns
Parser A parser object that is not parsing anything

Definition at line 6521 of file Parser.php.

◆ getFunctionHooks()

Parser::getFunctionHooks ( )

Get all registered function hook identifiers.

Returns
array

Definition at line 5137 of file Parser.php.

References firstCallInit().

◆ getFunctionLang()

Parser::getFunctionLang ( )

Get a language object for use in parser functions such as {{FORMATNUM:}}.

Returns
Language

Definition at line 1048 of file Parser.php.

References getTargetLanguage().

Referenced by getVariableValue().

◆ getFunctionSynonyms()

Parser::getFunctionSynonyms ( )
Since
1.32
Returns
array

Definition at line 5769 of file Parser.php.

References $mFunctionSynonyms, and firstCallInit().

◆ getImageParams()

Parser::getImageParams (   $handler)
Parameters
MediaHandler$handler
Returns
array

Definition at line 5366 of file Parser.php.

References $type.

Referenced by makeImage().

◆ getLinkRenderer()

Parser::getLinkRenderer ( )

Get a LinkRenderer instance to make links with.

Since
1.28
Returns
LinkRenderer

Definition at line 1116 of file Parser.php.

References $mLinkRenderer, and getOptions().

Referenced by braceSubstitution(), magicLinkCallback(), and makeKnownLinkHolder().

◆ getMagicWordFactory()

Parser::getMagicWordFactory ( )

Get the MagicWordFactory that this Parser is using.

Since
1.32
Returns
MagicWordFactory

Definition at line 1134 of file Parser.php.

References $magicWordFactory.

◆ getOptions()

Parser::getOptions ( )

Get the ParserOptions object.

Returns
ParserOptions

Definition at line 1016 of file Parser.php.

References $mOptions.

Referenced by getLinkRenderer().

◆ getOutput()

Parser::getOutput ( )

Get the ParserOutput object.

Returns
ParserOutput

Definition at line 1007 of file Parser.php.

References $mOutput.

Referenced by fetchTemplateAndTitle(), and CoreTagHooks\indicator().

◆ getPreloadText()

Parser::getPreloadText (   $text,
Title  $title,
ParserOptions  $options,
  $params = [] 
)

Process the wikitext for the "?preload=" feature.

(T7210)

"<noinclude>", "<includeonly>" etc. are parsed as for template transclusion, comments, templates, arguments, tags hooks and parser functions are untouched.

Parameters
string$text
Title$title
ParserOptions$options
array$params
Returns
string

Definition at line 909 of file Parser.php.

References getPreprocessor(), lock(), PPFrame\NO_ARGS, PPFrame\NO_TEMPLATES, OT_PLAIN, preprocessToDom(), and startParse().

◆ getPreprocessor()

Parser::getPreprocessor ( )

Get a preprocessor object.

Returns
Preprocessor

Definition at line 1102 of file Parser.php.

References $mPreprocessor.

Referenced by cleanSig(), extractSections(), formatHeadings(), getPreloadText(), preprocessToDom(), and replaceVariables().

◆ getRevisionId()

Parser::getRevisionId ( )

Get the ID of the revision we are parsing.

The return value will be either:

  • a) Positive, indicating a specific revision ID (current or old)
  • b) Zero, meaning the revision ID is specified by getCurrentRevisionCallback()
  • c) Null, meaning the parse is for preview mode and there is no revision
Returns
int|null

Definition at line 5998 of file Parser.php.

References $mRevisionId.

Referenced by getVariableValue().

◆ getRevisionObject()

Parser::getRevisionObject ( )

Get the revision object for $this->mRevisionId.

Returns
Revision|null Either a Revision object or null
Since
1.23 (public since 1.23)

Definition at line 6008 of file Parser.php.

References $mRevisionId, $mRevisionObject, getTitle(), and Revision\newFromId().

Referenced by getRevisionSize(), getRevisionTimestamp(), getRevisionTimestampSubstring(), getRevisionUser(), and getVariableValue().

◆ getRevisionSize()

Parser::getRevisionSize ( )

Get the size of the revision.

Returns
int|null Revision size

Definition at line 6097 of file Parser.php.

References $mInputSize, $mRevisionSize, and getRevisionObject().

Referenced by getVariableValue().

◆ getRevisionTimestamp()

Parser::getRevisionTimestamp ( )

Get the timestamp associated with the current revision, adjusted for the default server-local timestamp.

Returns
string TS_MW timestamp

Definition at line 6052 of file Parser.php.

References $mRevisionTimestamp, and getRevisionObject().

Referenced by getRevisionTimestampSubstring().

◆ getRevisionTimestampSubstring()

Parser::getRevisionTimestampSubstring (   $start,
  $len,
  $mtts,
  $variable 
)
private
Parameters
int$start
int$len
int$mttsMax time-till-save; sets vary-revision-timestamp if result changes by then
string$variableParser variable name
Returns
string

Definition at line 3063 of file Parser.php.

References getRevisionObject(), getRevisionTimestamp(), setOutputFlag(), and wfTimestamp().

Referenced by getVariableValue().

◆ getRevisionUser()

Parser::getRevisionUser ( )

Get the name of the user that edited the last revision.

Returns
string User name

Definition at line 6077 of file Parser.php.

References $mRevisionUser, getRevisionObject(), and getUser().

Referenced by getVariableValue().

◆ getSection()

Parser::getSection (   $text,
  $sectionId,
  $defaultText = '' 
)

This function returns the text of a section, specified by a number ($section).

A section is text under a heading like == Heading == or \<h1\>Heading\</h1\>, or the first section before any such heading (section 0).

If a section contains subsections, these are also returned.

Parameters
string$textText to look in
string | int$sectionIdSection identifier as a number or string (e.g. 0, 1 or 'T-1').
string$defaultTextDefault to return if section is not found
Returns
string Text of the requested section

Definition at line 5968 of file Parser.php.

References extractSections().

◆ getSectionNameFromStrippedText()

static Parser::getSectionNameFromStrippedText (   $text)
staticprivate

◆ getStripList()

Parser::getStripList ( )

Get a list of strippable XML-like elements.

Returns
array

Definition at line 1230 of file Parser.php.

References $mStripList.

◆ getStripState()

Parser::getStripState ( )

Get the StripState.

Returns
StripState

Definition at line 1239 of file Parser.php.

References $mStripState.

◆ getTags()

Parser::getTags ( )

Accessor.

Returns
array

Definition at line 5756 of file Parser.php.

References firstCallInit().

◆ getTargetLanguage()

Parser::getTargetLanguage ( )

Get the target language for the content being parsed.

This is usually the language that the content is in.

Since
1.19
Exceptions
MWException
Returns
Language

Definition at line 1061 of file Parser.php.

Referenced by braceSubstitution(), formatHeadings(), getConverterLanguage(), getFunctionLang(), internalParseHalfParsed(), makeFreeExternalLink(), makeImage(), Linker\makeImageLink(), parse(), replaceExternalLinks(), and replaceInternalLinks2().

◆ getTemplateDom()

Parser::getTemplateDom (   $title)

Get the semi-parsed DOM representation of a template with a given title, and its redirect destination title.

Cached.

Parameters
Title$title
Returns
array

Definition at line 3713 of file Parser.php.

References $title, fetchTemplateAndTitle(), Title\makeTitle(), and preprocessToDom().

Referenced by braceSubstitution().

◆ getTitle()

Parser::getTitle ( )

Accessor for the Title object.

Since 1.34, leaving mTitle uninitialized as null is deprecated.

Returns
Title|null

Definition at line 959 of file Parser.php.

References $mTitle, and wfDeprecated().

Referenced by fetchTemplateAndTitle(), getRevisionObject(), and getUserSig().

◆ getUrlProtocols()

Parser::getUrlProtocols ( )
Since
1.32
Returns
string

Definition at line 5778 of file Parser.php.

References $mUrlProtocols.

◆ getUser()

Parser::getUser ( )

Get a User object either from $this->mUser, if set, or from the ParserOptions object otherwise.

Returns
User

Definition at line 1090 of file Parser.php.

References $mUser.

Referenced by braceSubstitution(), and getRevisionUser().

◆ getUserSig()

Parser::getUserSig ( $user,
  $nickname = false,
  $fancySig = null 
)

Fetch the user's signature text, if any, and normalize to validated, ready-to-insert wikitext.

If you have pre-fetched the nickname or the fancySig option, you can specify them here to save a database query. Do not reuse this parser instance after calling getUserSig(), as it may have changed.

Parameters
User&$user
string | bool$nicknameNickname to use or false to use user's default nickname
bool | null$fancySigwhether the nicknname is the complete signature or null to use default value
Returns
string

Definition at line 4816 of file Parser.php.

References cleanSig(), getTitle(), validateSig(), wfEscapeWikiText(), and wfMessage().

Referenced by pstPass2().

◆ getVariableValue()

◆ guessLegacySectionNameFromWikiText()

Parser::guessLegacySectionNameFromWikiText (   $text)

Same as guessSectionNameFromWikiText(), but produces legacy anchors instead, if possible.

For use in redirects, since various versions of Microsoft browsers interpret Location: headers as something other than UTF-8, resulting in breakage.

Parameters
string$textThe section name
Returns
string Anchor (starting with '#')

Definition at line 6198 of file Parser.php.

References makeLegacyAnchor(), and stripSectionName().

◆ guessSectionNameFromStrippedText()

static Parser::guessSectionNameFromStrippedText (   $text)
static

Like guessSectionNameFromWikiText(), but takes already-stripped text as input.

Parameters
string$textSection name (plain text)
Returns
string Anchor (starting with '#')

Definition at line 6210 of file Parser.php.

Referenced by Linker\formatAutocomments(), and SpecialListGroupRights\outputNamespaceProtectionInfo().

◆ guessSectionNameFromWikiText()

Parser::guessSectionNameFromWikiText (   $text)

Try to guess the section anchor name based on a wikitext fragment presumably extracted from a heading, for example "Header" from "== Header ==".

Parameters
string$text
Returns
string Anchor (starting with '#')

Definition at line 6182 of file Parser.php.

References stripSectionName().

◆ incrementExpensiveFunctionCount()

Parser::incrementExpensiveFunctionCount ( )

Increment the expensive function count.

Returns
bool False if the limit has been exceeded

Definition at line 4219 of file Parser.php.

◆ incrementIncludeSize()

Parser::incrementIncludeSize (   $type,
  $size 
)

Increment an include size counter.

Parameters
string$typeThe type of expansion
int$sizeThe size of the text
Returns
bool False if this inclusion would take it over the maximum, true otherwise

Definition at line 4205 of file Parser.php.

References $type.

Referenced by argSubstitution(), and braceSubstitution().

◆ initialiseVariables()

Parser::initialiseVariables ( )

initialise the magic variables (like CURRENTMONTHNAME) and substitution modifiers

Definition at line 3093 of file Parser.php.

Referenced by firstCallInit().

◆ insertStripItem()

Parser::insertStripItem (   $text)

Add an item to the strip state Returns the unique tag which must be inserted into the stripped text The tag will be replaced with the original text in unstrip()

Parameters
string$text
Returns
string

Definition at line 1252 of file Parser.php.

Referenced by braceSubstitution().

◆ internalParse()

Parser::internalParse (   $text,
  $isMain = true,
  $frame = false 
)

Helper function for parse() that transforms wiki markup into half-parsed HTML.

Only called for $mOutputType == self::OT_HTML.

Access:
private
Parameters
string$textThe text to parse

Definition at line 1476 of file Parser.php.

References doAllQuotes(), doDoubleUnderscore(), doHeadings(), doMagicLinks(), doTableStuff(), formatHeadings(), preprocessToDom(), Sanitizer\removeHTMLtags(), replaceExternalLinks(), replaceInternalLinks(), replaceVariables(), and Hooks\run().

Referenced by parse(), and recursiveTagParse().

◆ internalParseHalfParsed()

Parser::internalParseHalfParsed (   $text,
  $isMain = true,
  $linestart = true 
)
private

Helper function for parse() that transforms half-parsed HTML into fully parsed HTML.

Parameters
string$text
bool$isMain
bool$linestart
Returns
string

Definition at line 1548 of file Parser.php.

References Sanitizer\armorFrenchSpaces(), doBlockLevels(), getTargetLanguage(), MWTidy\isEnabled(), Sanitizer\normalizeCharReferences(), replaceLinkHolders(), replaceTransparentTags(), Hooks\run(), MWTidy\tidy(), and wfDeprecated().

Referenced by parse(), parseExtensionTagAsTopLevelDoc(), and recursiveTagParseFully().

◆ interwikiTransclude()

Parser::interwikiTransclude (   $title,
  $action 
)

Transclude an interwiki link.

Parameters
Title$title
string$actionUsually one of (raw, render)
Returns
string

Definition at line 3983 of file Parser.php.

References $cache, $title, MWHttpRequest\factory(), and wfMessage().

Referenced by braceSubstitution().

◆ isCurrentRevisionOfTitleCached()

Parser::isCurrentRevisionOfTitleCached (   $title)
Parameters
Title$title
Returns
bool
Since
1.34

Definition at line 3775 of file Parser.php.

References $title.

◆ isValidHalfParsedText()

Parser::isValidHalfParsedText (   $data)

Returns true if the given array, presumed to be generated by serializeHalfParsedText(), is compatible with the current version of the parser.

Deprecated:
since 1.31
Parameters
array$data
Returns
bool

Definition at line 6431 of file Parser.php.

References wfDeprecated().

◆ killMarkers()

Parser::killMarkers (   $text)

Remove any strip markers found in the given text.

Parameters
string$text
Returns
string

Definition at line 6356 of file Parser.php.

◆ limitationWarn()

Parser::limitationWarn (   $limitationType,
  $current = '',
  $max = '' 
)

Warn the user when a parser limitation is reached Will warn at most once the user per limitation type.

The results are shown during preview and run through the Parser (See EditPage.php)

Parameters
string$limitationTypeShould be one of: 'expensive-parserfunction' (corresponding messages: 'expensive-parserfunction-warning', 'expensive-parserfunction-category') 'post-expand-template-argument' (corresponding messages: 'post-expand-template-argument-warning', 'post-expand-template-argument-category') 'post-expand-template-inclusion' (corresponding messages: 'post-expand-template-inclusion-warning', 'post-expand-template-inclusion-category') 'node-count-exceeded' (corresponding messages: 'node-count-exceeded-warning', 'node-count-exceeded-category') 'expansion-depth-exceeded' (corresponding messages: 'expansion-depth-exceeded-warning', 'expansion-depth-exceeded-category')
string | int | null$currentCurrent value
string | int | null$maxMaximum allowed, when an explicit limit has been exceeded, provide the values (optional)

Definition at line 3247 of file Parser.php.

References addTrackingCategory(), and wfMessage().

Referenced by argSubstitution(), braceSubstitution(), and parse().

◆ lock()

Parser::lock ( )
protected

Lock the current instance of the parser.

This is meant to stop someone from calling the parser recursively and messing up all the strip state.

Exceptions
MWExceptionIf parser is in a parse
Returns
ScopedCallback The lock will be released once the return value goes out of scope.

Definition at line 6474 of file Parser.php.

Referenced by cleanSig(), extractSections(), getPreloadText(), parse(), preprocess(), preSaveTransform(), and testSrvus().

◆ magicLinkCallback()

Parser::magicLinkCallback (   $m)
Exceptions
MWException
Parameters
array$m
Returns
string HTML

Definition at line 1676 of file Parser.php.

References addTrackingCategory(), getLinkRenderer(), SpecialPage\getTitleFor(), Linker\makeExternalLink(), makeFreeExternalLink(), and wfMessage().

◆ makeAnchor()

static Parser::makeAnchor (   $sectionName)
staticprivate

Definition at line 6158 of file Parser.php.

References Sanitizer\escapeIdForLink().

◆ makeFreeExternalLink()

Parser::makeFreeExternalLink (   $url,
  $numPostProto 
)

Make a free external link, given a user-supplied URL.

Parameters
string$url
int$numPostProtoThe number of characters after the protocol.
Returns
string HTML
Access:
private

Definition at line 1748 of file Parser.php.

References Sanitizer\cleanUrl(), getExternalLinkAttribs(), getTargetLanguage(), Linker\makeExternalLink(), and maybeMakeExternalImage().

Referenced by magicLinkCallback().

◆ makeImage()

Parser::makeImage (   $title,
  $options,
  $holders = false 
)

Parse image options text and use it to make an image.

Parameters
Title$title
string$options
LinkHolderArray | bool$holders
Returns
string HTML

Definition at line 5420 of file Parser.php.

References $file, $title, $type, addTrackingCategory(), StringUtils\delimiterExplode(), fetchFileAndTitle(), getImageParams(), getTargetLanguage(), Linker\makeImageLink(), parseLinkParameter(), Hooks\run(), and stripAltText().

Referenced by replaceInternalLinks2().

◆ makeKnownLinkHolder()

Parser::makeKnownLinkHolder (   $nt,
  $text = '',
  $trail = '',
  $prefix = '' 
)
protected

Render a forced-blue link inline; protect against double expansion of URLs if we're in a mode that prepends full URL prefixes to internal links.

Since this little disaster has to split off the trail text to avoid breaking URLs in the following text without breaking trails on the wiki links, it's been made into a horrible function.

Parameters
Title$nt
string$text
string$trail
string$prefix
Returns
string HTML-wikitext mix oh yuck

Definition at line 2636 of file Parser.php.

References armorLinks(), getLinkRenderer(), and Linker\splitTrail().

Referenced by replaceInternalLinks2().

◆ makeLegacyAnchor()

Parser::makeLegacyAnchor (   $sectionName)
private

◆ makeLimitReport()

Parser::makeLimitReport ( )
protected

Set the limit report data in the current ParserOutput, and return the limit report HTML comment.

Returns
string

Definition at line 659 of file Parser.php.

References Hooks\run(), wfDebugLog(), wfHostname(), and wfMessage().

Referenced by parse().

◆ markerSkipCallback()

Parser::markerSkipCallback (   $s,
  $callback 
)

Call a callback function on all regions of the given text that are not inside strip markers, and replace those regions with the return value of the callback.

For example, with input:

aaa<MARKER>bbb

This will call the callback function twice, with 'aaa' and 'bbb'. Those two strings will be replaced with the value returned by the callback in each case.

Parameters
string$s
callable$callback
Returns
string

Definition at line 6326 of file Parser.php.

References $s.

◆ maybeDoSubpageLink()

Parser::maybeDoSubpageLink (   $target,
$text 
)

Handle link to subpage if necessary.

Parameters
string$targetThe source of the link
string&$textThe link text, modified as necessary
Returns
string The full name of the link

Definition at line 2682 of file Parser.php.

References Linker\normalizeSubpageLink().

Referenced by braceSubstitution(), and replaceInternalLinks2().

◆ maybeMakeExternalImage()

Parser::maybeMakeExternalImage (   $url)
private

make an image if it's allowed, either through the global option, through the exception, or through the on-wiki whitelist

Parameters
string$url
Returns
string

Definition at line 2255 of file Parser.php.

References Linker\makeExternalImage(), and wfMessage().

Referenced by makeFreeExternalLink(), and replaceExternalLinks().

◆ nextLinkID()

Parser::nextLinkID ( )
Returns
int

Definition at line 1033 of file Parser.php.

◆ normalizeLinkUrl()

static Parser::normalizeLinkUrl (   $url)
static

Replace unusual escape codes in a URL with their equivalent characters.

This generally follows the syntax defined in RFC 3986, with special consideration for HTTP query strings.

Parameters
string$url
Returns
string

Definition at line 2174 of file Parser.php.

References IP\isValid().

Referenced by ParserOutput\addExternalLink(), ApiQueryExternalLinks\execute(), SpecialLinkSearch\execute(), and ApiQueryExtLinksUsage\run().

◆ normalizeSectionName()

static Parser::normalizeSectionName (   $text)
staticprivate

Apply the same normalization as code making links to this section would.

Parameters
string$text
Returns
string

Definition at line 6221 of file Parser.php.

◆ normalizeUrlComponent()

static Parser::normalizeUrlComponent (   $component,
  $unsafe 
)
staticprivate

Definition at line 2232 of file Parser.php.

References $matches.

◆ Options()

Parser::Options (   $x = null)

Accessor/mutator for the ParserOptions object.

Parameters
ParserOptions | null$xNew value or null to just get the current one
Returns
ParserOptions Current ParserOptions object

Definition at line 1026 of file Parser.php.

References wfSetVar().

◆ OutputType()

Parser::OutputType (   $x = null)

Accessor/mutator for the output type.

Parameters
int | null$xNew value or null to just get the current one
Returns
int

Definition at line 998 of file Parser.php.

References wfSetVar().

◆ parse()

Parser::parse (   $text,
Title  $title,
ParserOptions  $options,
  $linestart = true,
  $clearState = true,
  $revid = null 
)

Convert wikitext to HTML Do not call this function recursively.

Parameters
string$textText we want to parse

Definition at line 552 of file Parser.php.

References $mOutput, $mRevisionId, $mRevisionObject, $mRevisionSize, $mRevisionTimestamp, $mRevisionUser, ParserOptions\getDisableTitleConversion(), getTargetLanguage(), internalParse(), internalParseHalfParsed(), limitationWarn(), lock(), makeLimitReport(), OT_HTML, Hooks\run(), and startParse().

◆ parseExtensionTagAsTopLevelDoc()

Parser::parseExtensionTagAsTopLevelDoc (   $text)

Needed by Parsoid/PHP to ensure all the hooks for extensions are run in the right order.

The primary differences between this and recursiveTagParseFully are: (a) absence of $frame (b) passing true to internalParseHalfParse so all hooks are run (c) running 'ParserAfterParse' hook at the same point in the parsing pipeline when parse() does it. This kinda mimics Parsoid/JS behavior where exttags are processed by the M/w API.

This is a temporary convenience method and will go away as we proceed further with Parsoid <-> Parser.php integration.

Definition at line 845 of file Parser.php.

References internalParseHalfParsed(), recursiveTagParse(), and Hooks\run().

◆ parseLinkParameter()

Parser::parseLinkParameter (   $value)

Parse the value of 'link' parameter in image syntax ([[File:Foo.jpg|link=<value>]]).

Adds an entry to appropriate link tables.

Since
1.32
Parameters
string$value
Returns
array of [ type, target ], where:
  • type is one of:
    • null: Given value is not a valid link target, use default
    • 'no-link': Given value is empty, do not generate a link
    • 'link-url': Given value is a valid external link
    • 'link-title': Given value is a valid internal link
  • target is:
    • When type is null or 'no-link': false
    • When type is 'link-url': URL string corresponding to given value
    • When type is 'link-title': Title object corresponding to given value

Definition at line 5640 of file Parser.php.

References $mUrlProtocols, $type, and Title\newFromText().

Referenced by makeImage(), and renderImageGallery().

◆ parseWidthParam()

static Parser::parseWidthParam (   $value,
  $parseHeight = true 
)
static

Parsed a width param of imagelink like 300px or 200x300px.

Parameters
string$value
bool$parseHeight
Returns
array
Since
1.20

Definition at line 6445 of file Parser.php.

Referenced by CoreParserFunctions\filepath(), ImageGalleryBase\setHeights(), and ImageGalleryBase\setWidths().

◆ preprocess()

Parser::preprocess (   $text,
?Title  $title,
ParserOptions  $options,
  $revid = null,
  $frame = false 
)

Expand templates and variables in the text, producing valid, static wikitext.

Also removes comments. Do not call this function recursively.

Parameters
string$text
Title | null$title
ParserOptions$options
int | null$revid
bool | PPFrame$frame
Returns
mixed|string

Definition at line 864 of file Parser.php.

References lock(), OT_PREPROCESS, replaceVariables(), Hooks\run(), and startParse().

Referenced by transformMsg().

◆ preprocessToDom()

Parser::preprocessToDom (   $text,
  $flags = 0 
)

Preprocess some wikitext and return the document tree.

This is the ghost of replace_variables().

Parameters
string$textThe text to parse
int$flagsBitwise combination of:
  • self::PTD_FOR_INCLUSION: Handle "<noinclude>" and "<includeonly>" as if the text is being included. Default is to assume a direct page view.

The generated DOM tree must depend only on the input text and the flags. The DOM tree must be the same in OT_HTML and OT_WIKI mode, to avoid a regression of T6899.

Any flag added to the $flags parameter here, or any other parameter liable to cause a change in the DOM tree for a given text, must be passed through the section identifier in the section edit link and thus back to extractSections().

The output of this function is currently only cached in process memory, but a persistent cache may be implemented at a later date which takes further advantage of these strict dependency requirements.

Returns
PPNode

Definition at line 3123 of file Parser.php.

References getPreprocessor().

Referenced by braceSubstitution(), callParserFunction(), cleanSig(), extractSections(), formatHeadings(), getPreloadText(), getTemplateDom(), internalParse(), and replaceVariables().

◆ preSaveTransform()

Parser::preSaveTransform (   $text,
Title  $title,
User  $user,
ParserOptions  $options,
  $clearState = true 
)

Transform wiki markup when saving a page by doing "\\r\\n" -> "\\n" conversion, substituting signatures, {{subst:}} templates, etc.

Parameters
string$textThe text to transform
Title$titleThe Title object for the current article
User$userThe User object describing the current user
ParserOptions$optionsParsing options
bool$clearStateWhether to clear the parser state first
Returns
string The altered wiki markup

Definition at line 4705 of file Parser.php.

References ParserOptions\getPreSaveTransform(), lock(), TextContent\normalizeLineEndings(), OT_WIKI, pstPass2(), setUser(), and startParse().

Referenced by testPst().

◆ pstPass2()

Parser::pstPass2 (   $text,
  $user 
)
private

Pre-save transform helper function.

Parameters
string$text
User$user
Returns
string

Definition at line 4740 of file Parser.php.

References $t, MWTimestamp\getLocalInstance(), getUserSig(), Title\legalChars(), replaceVariables(), and setOutputFlag().

Referenced by preSaveTransform().

◆ recursivePreprocess()

Parser::recursivePreprocess (   $text,
  $frame = false 
)

Recursive parser entry point that can be called from an extension tag hook.

Parameters
string$textText to be expanded
bool | PPFrame$frameThe frame to use for expanding any template variables
Returns
string
Since
1.19

Definition at line 890 of file Parser.php.

References replaceVariables().

◆ recursiveTagParse()

Parser::recursiveTagParse (   $text,
  $frame = false 
)

Half-parse wikitext to half-parsed HTML.

This recursive parser entry point can be called from an extension tag hook.

The output of this function IS NOT SAFE PARSED HTML; it is "half-parsed" instead, which means that lists and links have not been fully parsed yet, and strip markers are still present.

Use recursiveTagParseFully() to fully parse wikitext to output-safe HTML.

Use this function if you're a parser tag hook and you want to parse wikitext before or after applying additional transformations, and you intend to return the result as hook output, which will cause it to go through the rest of parsing process automatically.

If $frame is not provided, then template variables (e.g., {{{1}}}) within $text are not expanded

Parameters
string$textText extension wants to have parsed

Definition at line 793 of file Parser.php.

References internalParse(), and Hooks\run().

Referenced by parseExtensionTagAsTopLevelDoc(), recursiveTagParseFully(), and renderImageGallery().

◆ recursiveTagParseFully()

Parser::recursiveTagParseFully (   $text,
  $frame = false 
)

Fully parse wikitext to fully parsed HTML.

This recursive parser entry point can be called from an extension tag hook.

The output of this function is fully-parsed HTML that is safe for output. If you're a parser tag hook, you might want to use recursiveTagParse() instead.

If $frame is not provided, then template variables (e.g., {{{1}}}) within $text are not expanded

Since
1.25
Parameters
string$textText extension wants to have parsed

Definition at line 821 of file Parser.php.

References internalParseHalfParsed(), and recursiveTagParse().

Referenced by CoreTagHooks\indicator().

◆ renderImageGallery()

Parser::renderImageGallery (   $text,
  $params 
)

Renders an image gallery from a text with one line per image.

text labels may be given by using |-style alternative text. E.g. Image:one.jpg|The number "1" Image:tree.jpg|A tree given as text will return the HTML of a gallery with two images, labeled 'The number "1"' and 'A tree'.

Parameters
string$text
array$params
Returns
string HTML

Definition at line 5202 of file Parser.php.

References $file, $line, $lines, $matches, $title, $type, StringUtils\delimiterExplode(), StringUtils\explode(), ImageGalleryBase\factory(), fetchFileNoRegister(), Title\newFromText(), NS_FILE, parseLinkParameter(), recursiveTagParse(), Hooks\run(), stripAltText(), and Sanitizer\validateTagAttributes().

◆ replaceExternalLinks()

Parser::replaceExternalLinks (   $text)

Replace external links (REL)

Note: this is all very hackish and the order of execution matters a lot. Make sure to run tests/parser/parserTests.php if you change this code.

Access:
private
Parameters
string$text
Exceptions
MWException
Returns
string

Definition at line 2044 of file Parser.php.

References $s, Sanitizer\cleanUrl(), getExternalLinkAttribs(), getTargetLanguage(), Linker\makeExternalLink(), maybeMakeExternalImage(), Linker\splitTrail(), and wfUrlProtocolsWithoutProtRel().

Referenced by internalParse(), and replaceInternalLinks2().

◆ replaceInternalLinks()

Parser::replaceInternalLinks (   $s)

Process [[ ]] wikilinks.

Parameters
string$s
Returns
string Processed text
Access:
private

Definition at line 2314 of file Parser.php.

References $s, and replaceInternalLinks2().

Referenced by internalParse().

◆ replaceInternalLinks2()

◆ replaceLinkHolders()

Parser::replaceLinkHolders ( $text,
  $options = 0 
)

Replace "<!--LINK-->" link placeholders with actual links, in the buffer Placeholders created in Linker::link()

Parameters
string&$text
int$options

Definition at line 5174 of file Parser.php.

Referenced by internalParseHalfParsed().

◆ replaceLinkHoldersText()

Parser::replaceLinkHoldersText (   $text)

Replace "<!--LINK-->" link placeholders with plain text of links (not HTML-formatted).

Parameters
string$text
Returns
string

Definition at line 5185 of file Parser.php.

Referenced by formatHeadings(), and stripAltText().

◆ replaceSection()

Parser::replaceSection (   $oldText,
  $sectionId,
  $newText 
)

This function returns $oldtext after the content of the section specified by $section has been replaced with $text.

If the target section does not exist, $oldtext is returned unchanged.

Parameters
string$oldTextFormer text of the article
string | int$sectionIdSection identifier as a number or string (e.g. 0, 1 or 'T-1').
string$newTextReplacing text
Returns
string Modified text

Definition at line 5984 of file Parser.php.

References extractSections().

◆ replaceTransparentTags()

Parser::replaceTransparentTags (   $text)

Replace transparent tags in $text with the values given by the callbacks.

Transparent tag hooks are like regular XML-style tag hooks, except they operate late in the transformation sequence, on HTML instead of wikitext.

Parameters
string$text
Returns
string

Definition at line 5792 of file Parser.php.

References $content, and $matches.

Referenced by internalParseHalfParsed().

◆ replaceVariables()

Parser::replaceVariables (   $text,
  $frame = false,
  $argsOnly = false 
)

Replace magic variables, templates, and template arguments with the appropriate text.

Templates are substituted recursively, taking care to avoid infinite loops.

Note that the substitution depends on value of $mOutputType: self::OT_WIKI: only {{subst:}} templates self::OT_PREPROCESS: templates but not extension tags self::OT_HTML: all templates and extension tags

Parameters
string$textThe text to transform
false | PPFrame | array$frameObject describing the arguments passed to the template. Arguments may also be provided as an associative array, as was the usual case before MW1.12. Providing arguments this way may be useful for extensions wishing to perform variable replacement explicitly.
bool$argsOnlyOnly do argument (triple-brace) expansion, not double-brace expansion.
Returns
string

Definition at line 3168 of file Parser.php.

References getPreprocessor(), PPFrame\NO_TEMPLATES, and preprocessToDom().

Referenced by attributeStripCallback(), internalParse(), preprocess(), pstPass2(), recursivePreprocess(), and testSrvus().

◆ resetOutput()

Parser::resetOutput ( )

Reset the ParserOutput.

Definition at line 530 of file Parser.php.

Referenced by clearState().

◆ serializeHalfParsedText()

Parser::serializeHalfParsedText (   $text)

Save the parser state required to convert the given half-parsed text to HTML.

"Half-parsed" in this context means the output of recursiveTagParse() or internalParse(). This output has strip markers from replaceVariables (extensionSubstitution() etc.), and link placeholders from replaceLinkHolders().

Returns an array which can be serialized and stored persistently. This array can later be loaded into another parser instance with unserializeHalfParsedText(). The text can then be safely incorporated into the return value of a parser hook.

Deprecated:
since 1.31
Parameters
string$text
Returns
array

Definition at line 6377 of file Parser.php.

References wfDeprecated().

◆ setDefaultSort()

Parser::setDefaultSort (   $sort)

Mutator for $mDefaultSort.

Parameters
string$sortNew value

Definition at line 6118 of file Parser.php.

References $sort.

◆ setFunctionHook()

Parser::setFunctionHook (   $id,
callable  $callback,
  $flags = 0 
)

Create a function, e.g.

{{sum:1|2|3}} The callback function should have the form: function myParserFunction( &$parser, $arg1, $arg2, $arg3 ) { ... }

Or with Parser::SFH_OBJECT_ARGS: function myParserFunction( $parser, $frame, $args ) { ... }

The callback may either return the text result of the function, or an array with the text in element 0, and a number of flags in the other elements. The names of the flags are specified in the keys. Valid flags are: found The text returned is valid, stop processing the template. This is on by default. nowiki Wiki markup in the return value should be escaped isHTML The returned text is HTML, armour it against wikitext transformation

Parameters
string$idThe magic word ID
callable$callbackThe callback function (and object) to use
int$flagsA combination of the following flags: Parser::SFH_NO_HASH No leading hash, i.e. {{plural:...}} instead of {{if:...}}

Parser::SFH_OBJECT_ARGS Pass the template arguments as PPNode objects instead of text. This allows for conditional expansion of the parse tree, allowing you to eliminate dead branches and thus speed up parsing. It is also possible to analyse the parse tree of the arguments, and to control the way they are expanded.

The $frame parameter is a PPFrame. This can be used to produce expanded text from the arguments, for instance: $text = isset( $args[0] ) ? $frame->expand( $args[0] ) : '';

For technical reasons, $args[0] is pre-expanded and will be a string. This may change in future versions. Please call $frame->expand() on it anyway so that your code keeps working if/when this is changed.

If you want whitespace to be trimmed from $args, you need to do it yourself, post- expansion.

Please read the documentation in includes/parser/Preprocessor.php for more information about the methods available in PPFrame and PPNode.

Exceptions
MWException
Returns
string|callable The old callback function for this name, if any

Definition at line 5101 of file Parser.php.

References SFH_NO_HASH.

◆ setFunctionTagHook()

Parser::setFunctionTagHook (   $tag,
callable  $callback,
  $flags 
)

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.

Parameters
string$tag
callable$callback
int$flags
Exceptions
MWException
Returns
null

Definition at line 5152 of file Parser.php.

◆ setHook()

Parser::setHook (   $tag,
callable  $callback 
)

Create an HTML-style tag, e.g.

"<yourtag>special text</yourtag>" The callback should have the following form: function myParserHook( $text, $params, $parser, $frame ) { ... }

Transform and return $text. Use $parser for any required context, e.g. use $parser->getTitle() and $parser->getOptions() not $wgTitle or $wgOut->mParserOptions

Hooks may return extended information by returning an array, of which the first numbered element (index 0) must be the return string, and all other entries are extracted into local variables within an internal function in the Parser class.

This interface (introduced r61913) appears to be undocumented, but 'markerType' is used by some core tag hooks to override which strip array their results are placed in. Use great caution if attempting this interface, as it is not documented and injudicious use could smash private variables.

Parameters
string$tagThe tag to use, e.g. 'hook' for "<hook>"
callable$callbackThe callback function (and object) to use for the tag
Exceptions
MWException
Returns
callable|null The old value of the mTagHooks array associated with the hook

Definition at line 5007 of file Parser.php.

◆ setLinkID()

Parser::setLinkID (   $id)
Parameters
int$id

Definition at line 1040 of file Parser.php.

◆ setOutputFlag()

Parser::setOutputFlag (   $flag,
  $reason 
)
protected
Parameters
string$flag
string$reason

Definition at line 6544 of file Parser.php.

Referenced by fetchTemplateAndTitle(), getRevisionTimestampSubstring(), getVariableValue(), and pstPass2().

◆ setOutputType()

Parser::setOutputType (   $ot)

Set the output type.

Parameters
int$otNew value

Definition at line 981 of file Parser.php.

References $ot, OT_HTML, OT_PLAIN, OT_PREPROCESS, and OT_WIKI.

Referenced by formatHeadings(), and startParse().

◆ setTitle()

Parser::setTitle ( Title  $t = null)

Set the context title.

Parameters
Title | null$t

Definition at line 939 of file Parser.php.

References $t, Title\makeTitle(), and NS_SPECIAL.

Referenced by startParse().

◆ setTransparentTagHook()

Parser::setTransparentTagHook (   $tag,
callable  $callback 
)

As setHook(), but letting the contents be parsed.

Transparent tag hooks are like regular XML-style tag hooks, except they operate late in the transformation sequence, on HTML instead of wikitext.

This is probably obsoleted by things dealing with parser frames? The only extension currently using it is geoserver.

Since
1.10
Todo:
better document or deprecate this
Parameters
string$tagThe tag to use, e.g. 'hook' for "<hook>"
callable$callbackThe callback function (and object) to use for the tag
Exceptions
MWException
Returns
callable|null The old value of the mTagHooks array associated with the hook

Definition at line 5038 of file Parser.php.

◆ setUser()

Parser::setUser (   $user)

Set the current user.

Should only be used when doing pre-save transform.

Parameters
User | null$userUser object or null (to reset)

Definition at line 930 of file Parser.php.

Referenced by preSaveTransform().

◆ splitWhitespace()

static Parser::splitWhitespace (   $s)
static

Return a three-element array: leading whitespace, string contents, trailing whitespace.

Parameters
string$s
Returns
array

Definition at line 3135 of file Parser.php.

References $s.

◆ startExternalParse()

Parser::startExternalParse ( ?Title  $title,
ParserOptions  $options,
  $outputType,
  $clearState = true,
  $revId = null 
)

Set up some variables which are usually set up in parse() so that an external function can call some class members with confidence.

Parameters
Title | null$title
ParserOptions$options
int$outputType
bool$clearState
int | null$revId

Definition at line 4929 of file Parser.php.

References startParse().

◆ startParse()

Parser::startParse ( ?Title  $title,
ParserOptions  $options,
  $outputType,
  $clearState = true 
)
private
Parameters
Title | null$title
ParserOptions$options
int$outputType
bool$clearState

Definition at line 4944 of file Parser.php.

References clearState(), setOutputType(), and setTitle().

Referenced by cleanSig(), extractSections(), getPreloadText(), parse(), preprocess(), preSaveTransform(), startExternalParse(), and testSrvus().

◆ statelessFetchRevision()

static Parser::statelessFetchRevision ( Title  $title,
  $parser = false 
)
static

Wrapper around Revision::newFromTitle to allow passing additional parameters without passing them on to it.

Since
1.24
Parameters
Title$title
Parser | bool$parser
Returns
Revision|bool False if missing

Definition at line 3791 of file Parser.php.

References DB_REPLICA, Revision\newKnownCurrent(), and wfGetDB().

◆ statelessFetchTemplate()

static Parser::statelessFetchTemplate (   $title,
  $parser = false 
)
static

Static function to get a template Can be overridden via ParserOptions::setTemplateCallback().

Parameters
Title$title
bool | Parser$parser
Returns
array

Definition at line 3843 of file Parser.php.

References $content, $title, getContentLanguage(), Revision\newFromId(), Revision\newFromTitle(), NS_MEDIAWIKI, Hooks\run(), and wfMessage().

◆ stripAltText()

Parser::stripAltText (   $caption,
  $holders 
)
protected
Parameters
string$caption
LinkHolderArray | bool$holders
Returns
mixed|string

Definition at line 5670 of file Parser.php.

References replaceLinkHoldersText(), and Sanitizer\stripAllTags().

Referenced by makeImage(), and renderImageGallery().

◆ stripOuterParagraph()

static Parser::stripOuterParagraph (   $html)
static

Strip outer.

tag from the HTML source of a single paragraph.

Returns original HTML if the

tag has any attributes, if there's no wrapping

tag, or if there is more than one

tag in the input HTML.

Parameters
string$html
Returns
string
Since
1.24

Definition at line 6502 of file Parser.php.

Referenced by ApiParamInfo\formatHelpMessages(), ApiAuthManagerHelper\formatMessage(), CoreTagHooks\indicator(), Installer\parse(), OutputPage\parseInline(), OutputPage\parseInlineAsInterface(), MediaWiki\Preferences\DefaultPreferencesFactory\profilePreferences(), and Message\toString().

◆ stripSectionName()

Parser::stripSectionName (   $text)

Strips a text string of wikitext for use in a section anchor.

Accepts a text string and then removes all wikitext from the string and leaves only the resultant text (i.e. the result of [[User:WikiSysop|Sysop]] would be "Sysop" and the result of [[User:WikiSysop]] would be "User:WikiSysop") - this is intended to create valid section anchors by mimicing the output of the parser when headings are parsed.

Parameters
string$textText string to be stripped of wikitext for use in a Section anchor
Returns
string Filtered text string

Definition at line 6249 of file Parser.php.

References StringUtils\delimiterReplace(), and doQuotes().

Referenced by guessLegacySectionNameFromWikiText(), and guessSectionNameFromWikiText().

◆ testPreprocess()

Parser::testPreprocess (   $text,
Title  $title,
ParserOptions  $options 
)
Parameters
string$text
Title$title
ParserOptions$options
Returns
string

Definition at line 6306 of file Parser.php.

References OT_PREPROCESS, and testSrvus().

◆ testPst()

Parser::testPst (   $text,
Title  $title,
ParserOptions  $options 
)
Parameters
string$text
Title$title
ParserOptions$options
Returns
string

Definition at line 6296 of file Parser.php.

References ParserOptions\getUser(), and preSaveTransform().

◆ testSrvus()

Parser::testSrvus (   $text,
Title  $title,
ParserOptions  $options,
  $outputType = self::OT_HTML 
)

strip/replaceVariables/unstrip for preprocessor regression testing

Parameters
string$text
Title$title
ParserOptions$options
int$outputType
Returns
string

Definition at line 6278 of file Parser.php.

References lock(), Sanitizer\removeHTMLtags(), replaceVariables(), and startParse().

Referenced by testPreprocess().

◆ Title()

Parser::Title ( Title  $x = null)

Accessor/mutator for the Title object.

Parameters
Title | null$xTitle object or null to just get the current one
Returns
Title|null

Definition at line 972 of file Parser.php.

References wfSetVar().

◆ transformMsg()

Parser::transformMsg (   $text,
  $options,
  $title = null 
)

Wrapper for preprocess()

Parameters
string$textThe text to preprocess
ParserOptions$options
Title | null$titleTitle object or null to use $wgTitle
Returns
string

Definition at line 4963 of file Parser.php.

References $title, $wgTitle, and preprocess().

◆ unserializeHalfParsedText()

Parser::unserializeHalfParsedText (   $data)

Load the parser state given in the $data array, which is assumed to have been generated by serializeHalfParsedText().

The text contents is extracted from the array, and its markers are transformed into markers appropriate for the current Parser instance. This transformed text is returned, and can be safely included in the return value of a parser hook.

If the $data array has been stored persistently, the caller should first check whether it is still valid, by calling isValidHalfParsedText().

Deprecated:
since 1.31
Parameters
array$dataSerialized data
Exceptions
MWException
Returns
string

Definition at line 6404 of file Parser.php.

References wfDeprecated().

◆ validateSig()

Parser::validateSig (   $text)

Check that the user's signature contains no bad XML.

Parameters
string$text
Returns
string|bool An expanded string, or false if invalid.

Definition at line 4863 of file Parser.php.

References Xml\isWellFormedXmlFragment().

Referenced by getUserSig().

Member Data Documentation

◆ $badFileLookup

BadFileLookup Parser::$badFileLookup
private

Definition at line 308 of file Parser.php.

◆ $contLang

Language Parser::$contLang
private

Definition at line 281 of file Parser.php.

Referenced by getContentLanguage().

◆ $currentRevisionCache

MapCacheLRU null Parser::$currentRevisionCache
Since
1.24

A cache of the current revisions of titles. Keys are $title->getPrefixedDbKey()

Definition at line 261 of file Parser.php.

◆ $factory

ParserFactory Parser::$factory
private

Definition at line 284 of file Parser.php.

◆ $linkRendererFactory

LinkRendererFactory Parser::$linkRendererFactory
private

Definition at line 299 of file Parser.php.

◆ $logger

LoggerInterface Parser::$logger
private

Definition at line 305 of file Parser.php.

◆ $magicWordFactory

MagicWordFactory Parser::$magicWordFactory
private

Definition at line 278 of file Parser.php.

Referenced by getMagicWordFactory().

◆ $mAutonumber

Parser::$mAutonumber

Definition at line 195 of file Parser.php.

◆ $mConf

array Parser::$mConf
Deprecated:
since 1.34, there should be no need to use this

Definition at line 181 of file Parser.php.

◆ $mDefaultSort

Parser::$mDefaultSort

Definition at line 210 of file Parser.php.

Referenced by getCustomDefaultSort(), and getDefaultSort().

◆ $mDefaultStripList

Parser::$mDefaultStripList = []

Definition at line 155 of file Parser.php.

Referenced by clearTagHooks().

◆ $mDoubleUnderscores

Parser::$mDoubleUnderscores

Definition at line 211 of file Parser.php.

◆ $mExpensiveFunctionCount

Parser::$mExpensiveFunctionCount

Definition at line 212 of file Parser.php.

◆ $mExtLinkBracketedRegex

Parser::$mExtLinkBracketedRegex

Definition at line 184 of file Parser.php.

◆ $mFirstCall

bool Parser::$mFirstCall = true

Whether firstCallInit still needs to be called.

Definition at line 163 of file Parser.php.

◆ $mForceTocPosition

Parser::$mForceTocPosition

Definition at line 213 of file Parser.php.

◆ $mFunctionHooks

Parser::$mFunctionHooks = []

Definition at line 151 of file Parser.php.

◆ $mFunctionSynonyms

Parser::$mFunctionSynonyms = [ 0 => []

Definition at line 152 of file Parser.php.

Referenced by getFunctionSynonyms().

◆ $mFunctionTagHooks

Parser::$mFunctionTagHooks = []

Definition at line 153 of file Parser.php.

◆ $mGeneratedPPNodeCount

Parser::$mGeneratedPPNodeCount

Definition at line 209 of file Parser.php.

◆ $mHeadings

Parser::$mHeadings

Definition at line 211 of file Parser.php.

◆ $mHighestExpansionDepth

Parser::$mHighestExpansionDepth

Definition at line 209 of file Parser.php.

◆ $mImageParams

Parser::$mImageParams = []

Definition at line 157 of file Parser.php.

◆ $mImageParamsMagicArray

Parser::$mImageParamsMagicArray = []

Definition at line 158 of file Parser.php.

◆ $mIncludeCount

Parser::$mIncludeCount

Definition at line 202 of file Parser.php.

◆ $mIncludeSizes

Parser::$mIncludeSizes

Definition at line 209 of file Parser.php.

◆ $mInParse

bool string Parser::$mInParse = false

Recursive call protection.

This variable should be treated as if it were private.

Definition at line 267 of file Parser.php.

◆ $mInputSize

Parser::$mInputSize = false

Definition at line 246 of file Parser.php.

Referenced by getRevisionSize().

◆ $mLangLinkLanguages

array Parser::$mLangLinkLanguages

Array with the language name of each language link (i.e.

the interwiki prefix) in the key, value arbitrary. Used to avoid sending duplicate language links to the ParserOutput.

Definition at line 253 of file Parser.php.

◆ $mLinkHolders

LinkHolderArray Parser::$mLinkHolders

Definition at line 206 of file Parser.php.

◆ $mLinkID

Parser::$mLinkID

Definition at line 208 of file Parser.php.

◆ $mLinkRenderer

LinkRenderer Parser::$mLinkRenderer
protected

Definition at line 275 of file Parser.php.

Referenced by getLinkRenderer().

◆ $mMarkerIndex

Parser::$mMarkerIndex = 0

Definition at line 159 of file Parser.php.

◆ $mOptions

ParserOptions Parser::$mOptions

Definition at line 228 of file Parser.php.

Referenced by getOptions().

◆ $mOutput

ParserOutput Parser::$mOutput

Definition at line 194 of file Parser.php.

Referenced by getOutput(), and parse().

◆ $mOutputType

Parser::$mOutputType

Definition at line 238 of file Parser.php.

Referenced by formatHeadings().

◆ $mPPNodeCount

Parser::$mPPNodeCount

Definition at line 209 of file Parser.php.

◆ $mPreprocessor

Preprocessor Parser::$mPreprocessor

Definition at line 188 of file Parser.php.

Referenced by getPreprocessor().

◆ $mProfiler

SectionProfiler Parser::$mProfiler
protected

Definition at line 270 of file Parser.php.

◆ $mRevIdForTs

Parser::$mRevIdForTs

Definition at line 245 of file Parser.php.

◆ $mRevisionId

Parser::$mRevisionId

Definition at line 241 of file Parser.php.

Referenced by getRevisionId(), getRevisionObject(), and parse().

◆ $mRevisionObject

Parser::$mRevisionObject

Definition at line 240 of file Parser.php.

Referenced by getRevisionObject(), and parse().

◆ $mRevisionSize

Parser::$mRevisionSize

Definition at line 244 of file Parser.php.

Referenced by getRevisionSize(), and parse().

◆ $mRevisionTimestamp

Parser::$mRevisionTimestamp

Definition at line 242 of file Parser.php.

Referenced by getRevisionTimestamp(), and parse().

◆ $mRevisionUser

Parser::$mRevisionUser

Definition at line 243 of file Parser.php.

Referenced by getRevisionUser(), and parse().

◆ $mShowToc

Parser::$mShowToc

Definition at line 213 of file Parser.php.

◆ $mStripList

Parser::$mStripList = []

Definition at line 154 of file Parser.php.

Referenced by getStripList().

◆ $mStripState

StripState Parser::$mStripState

Definition at line 200 of file Parser.php.

Referenced by getStripState().

◆ $mSubstWords

MagicWordArray Parser::$mSubstWords

Definition at line 175 of file Parser.php.

◆ $mTagHooks

Parser::$mTagHooks = []

Definition at line 149 of file Parser.php.

◆ $mTitle

Title null Parser::$mTitle

Since 1.34, leaving mTitle uninitialized or setting mTitle to null is deprecated.

Definition at line 237 of file Parser.php.

Referenced by getTitle().

◆ $mTplDomCache

array Parser::$mTplDomCache

Definition at line 215 of file Parser.php.

◆ $mTplRedirCache

Parser::$mTplRedirCache

Definition at line 211 of file Parser.php.

◆ $mTransparentTagHooks

Parser::$mTransparentTagHooks = []

Definition at line 150 of file Parser.php.

◆ $mUrlProtocols

Parser::$mUrlProtocols

Definition at line 184 of file Parser.php.

Referenced by getUrlProtocols(), and parseLinkParameter().

◆ $mUser

User Parser::$mUser

Definition at line 220 of file Parser.php.

Referenced by getUser().

◆ $mVarCache

Parser::$mVarCache = []

Definition at line 156 of file Parser.php.

◆ $mVariables

MagicWordArray Parser::$mVariables

Definition at line 170 of file Parser.php.

◆ $nsInfo

NamespaceInfo Parser::$nsInfo
private

Definition at line 302 of file Parser.php.

◆ $ot

Parser::$ot

Definition at line 239 of file Parser.php.

Referenced by setOutputType().

◆ $specialPageFactory

SpecialPageFactory Parser::$specialPageFactory
private

Definition at line 287 of file Parser.php.

◆ $svcOptions

ServiceOptions Parser::$svcOptions
private

This is called $svcOptions instead of $options like elsewhere to avoid confusion with $mOptions, which is public and widely used, and also with the local variable $options used for ParserOptions throughout this file.

Definition at line 296 of file Parser.php.

Referenced by __construct().

◆ EXT_IMAGE_REGEX

const Parser::EXT_IMAGE_REGEX
Initial value:
= '/^(http:\/\/|https:\/\/)((?:\\[(?i:[0-9a-f:.]+)\\])?[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}]+)
\\/([A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF]+)\\.((?i)gif|png|jpg|jpeg)$/Sxu'

Definition at line 104 of file Parser.php.

◆ EXT_LINK_ADDR

const Parser::EXT_LINK_ADDR = '(?:[0-9.]+|\\[(?i:[0-9a-f:.]+)\\]|[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}])'

Definition at line 101 of file Parser.php.

◆ EXT_LINK_URL_CLASS

const Parser::EXT_LINK_URL_CLASS = '[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}]'

Definition at line 98 of file Parser.php.

◆ HALF_PARSED_VERSION

const Parser::HALF_PARSED_VERSION = 2

Update this version number when the output of serialiseHalfParsedText() changes in an incompatible way.

Definition at line 86 of file Parser.php.

◆ MARKER_PREFIX

const Parser::MARKER_PREFIX = "\x7f'\"`UNIQ-"

◆ OT_HTML

const Parser::OT_HTML = 1

Definition at line 115 of file Parser.php.

◆ OT_MSG

const Parser::OT_MSG = 3

Definition at line 118 of file Parser.php.

◆ OT_PLAIN

const Parser::OT_PLAIN = 4

Definition at line 119 of file Parser.php.

◆ OT_PREPROCESS

const Parser::OT_PREPROCESS = 3

◆ OT_WIKI

const Parser::OT_WIKI = 2

Definition at line 116 of file Parser.php.

◆ PTD_FOR_INCLUSION

const Parser::PTD_FOR_INCLUSION = 1

◆ SFH_NO_HASH

const Parser::SFH_NO_HASH = 1

Definition at line 89 of file Parser.php.

Referenced by CoreParserFunctions\register().

◆ SFH_OBJECT_ARGS

const Parser::SFH_OBJECT_ARGS = 2

Definition at line 90 of file Parser.php.

Referenced by CoreParserFunctions\register().

◆ SPACE_NOT_NL

const Parser::SPACE_NOT_NL = '(?:\t|&nbsp;|&\#0*160;|&\#[Xx]0*[Aa]0;|\p{Zs})'

Definition at line 108 of file Parser.php.

◆ TOC_END

const Parser::TOC_END = '</mw:toc>'

Definition at line 143 of file Parser.php.

Referenced by ParserOutput\getText().

◆ TOC_START

const Parser::TOC_START = '<mw:toc>'

Definition at line 142 of file Parser.php.

Referenced by ParserOutput\getText().

◆ VERSION

const Parser::VERSION = '1.6.4'

Update this version number when the ParserOutput format changes in an incompatible way, so the parser cache can automatically discard old data.

Definition at line 80 of file Parser.php.

Referenced by CacheTime\expired().


The documentation for this class was generated from the following file: