Manual:Parser.php

Description
This file contains the class  , which contains the method  , which converts wikitext>Special:MyLanguage/Wikitext|Wikitext to HTML. It performs, among other things, the following actions:


 * 1) Call helper function  , which in turns calls
 * 2)  , which replaces magic variables, templates, and template arguments with the appropriate text.
 * 3) It calls  , which preprocesses some wikitext and returns the document tree.
 * 4) Next it creates a   object and calls its   method to do the actual template magic.
 * 5)  </>, which cleans up HTML, removes dangerous tags and attributes, and removes HTML comments.
 * 6) <tvar|stuff> </>, which handles and renders the wikitext for tables.
 * 7) <tvar|underscore> </>, which removes valid switches>Special:MyLanguage/Help:Magic_words#Behavior_switches</>|double-underscore items, like <tvar|notoc>  </>, and records them in array <tvar|underscores> </>.
 * 8) <tvar|headings> </>, which parses  and renders section headers.
 * 9) <tvar|internal> </>, which processes internal links (<tvar|brace> </>) and stores them in   (a object),
 * 10) <tvar|allquotes> </>, which replaces single quotes with HTML markup ( <i>, <b>, etc).
 * 11) <tvar|extlinks> </>, which replaces and renders external links.
 * 12) <tvar|magiclinks> </>, which replaces special strings like "ISBN xxx" and "RFC xxx" with magic external links.
 * 13) <tvar|format> </>, which:
 * 14) * auto numbers headings if that options is enabled,
 * 15) * adds an <tvar|edit> [edit] </> link to sections for users who have enabled the option and can edit the page,
 * 16) * adds a Table of contents on the top for users who have enabled the option, and
 * 17) * auto-anchors headings.
 * 18) Next, <tvar|parse> </> calls <tvar|blocklevels> </>, which renders lists from lines starting with ':', '*', '#', etc.
 * 19) <tvar|holders> </> is called, which calls <tvar|array> </> on <tvar|mlink> </> to replace link placeholders with actual links, in the buffer Placeholders created in <tvar|makelink>Skin::makeLinkObj</>
 * 20) Next, the text is language converted (when applicable) using the <tvar|convert> </> method of the appropriate <tvar|lang>Language</> object.
 * 21) <tvar|transparent> </> is called, which replaces transparent tags with values which are provided by the callback functions in <tvar|taghooks> </>. Transparent tag hooks are like regular XML-style tag hooks, except they operate late in the transformation sequence, on HTML instead of wikitext.
 * 22) <tvar|charref> </> is called, which ensures that any entities and character references are legal for XML and XHTML specifically.
 * 23) If htmltidy>Special:MyLanguage/Manual:$wgUseTidy</>|HTML tidy is enabled, <tvar|tidy> </> is called to do the tidying.
 * 24) Finally the rendered HTML result of the parse process is stored in the <tvar|parseroutput> </> object <tvar|moutput> </>, which is returned to the caller of <tvar|parse> </>.

Magic words

Accessors
Get a User object either from <tvar|mUser>$this->mUser</>, if set, or from the ParserOptions object otherwise.
 * Accessor for <tvar|msort>$mDefaultSort</>. Unlike <tvar|getsort>getDefaultSort</>, it will return false if none is set.
 * Accessor for <tvar|msort>$mDefaultSort</>. Will use the empty string if none is set.
 * Get the ParserOptions object.
 * Get the ParserOutput object.
 * Get a preprocessor object.
 * Get the ID of the revision we are parsing.
 * Get the timestamp associated with the current revision, adjusted for the default server-local timestamp.
 * Get the name of the user that edited the last revision.
 * Accessor.
 * Get the target language for the content being parsed.
 * Accessor for the Title object.

Set
Create an HTML-style tag, e.g. <tvar|example> </>. The callback should have the following form: <tvar|code> </>
 * Create a function, e.g. <tvar|example> </>. The callback function should have the form: <tvar|code> .</>
 * Create a tag function, e.g. <tvar|example> </>. Unlike tag hooks, tag functions are parsed at preprocessor level. Unlike parser functions, their content is not preprocessed.