Extension:Character Escapes

Characters Escapes
Sometimes it is desired that wiki markup be parsed (or remain unparsed) under certain conditions. Since certain characters or character sequences are processed before reaching the parser function, we have to use escapes to prevent markup being parsed prematurely. MediaWiki does not have built-in mechanic for this, so we have to make our own:


 * \l (less than) is translated to &lt;
 * \g (greater than) is translated to &gt;


 * \o (open double curly braces) is translated to { {
 * \c (close double curly braces) is translated to } }
 * \p (pipe) is translated to |


 * \\ is translated to \


 * \n is translated to a newline

The first two translations make it possible to embed a wiki tag extension into a parameter of a parser function call. The next three translations make it possible to call a template, invoke a magic word, or call a parser function which prevents them from executing until conditions dictate that the results of such a call will be displayed. The next one is for times where you want to display text like "\p" without having it converted into a pipe, which is done by writing it as "\\p". The last one is for tags that use newline characters as delimiters for parameters. It allows a newline character to be passed as part of the parameter instead of indicating the beginning/ending of a parameter.

Example
produces the following:


 * 0
 * 1
 * 2
 * 3
 * 4

Note that the example uses the variables and control structure functions extensions.

Writing Extensions that Use Character Escapes
If you would like your extension to make use of character escapes, the class CharacterEscapes contains two static functions for replacing characters with escapes (CharacterEscapes::escChars) and replacing escapes with characters (CharacterEscapes::replaceCharEsc). Also you need to process the input for your extensions with $parser->mStripState->unstripBoth, otherwise you'll run into Bug 8451.

Installation
Create the directory CharacterEscapes in your extensions directory. Then in the new directory create the file CharacterEscapes.php that contains the following source code:

Then add

to the end of LocalSettings.php.