Custom Markup
administrators (intermediate)
PmWiki's markup translation engine is handled by a set of rules; each rule searches for a specific pattern in the markup text and replaces it with some replacement text. Internally, this is accomplished by using PHP's "preg_replace" function.
Note: The patterns provided to the Markup() function must use "/" (forward slash) as the delimiters. Unlike preg_replace(), which allows a variety of punctuation characters as delimiters, this function strictly requires the use of "/" for delimiting the regular expression pattern.
Introduction
Rules are added to the translation engine via PmWiki's Markup()
function, which looks like
Markup($name, $when, $pattern, $replace); # if no evaluation is needed, or if PHP < 5.5
![](http://bibliocosm.com/pub/latexcache/40e6a605f2bf4682229f354fee70dd62.png)
How can the text returned by my markup function be re-processed by the markup engine?
If the result of your markup contains more markup that should be processed, you have two options. First is to select a "when" argument that is processed earlier than the markup in your result. For example, if your markup may return [[links]], your "when" argument could be "<links"
and your markup will be processed before the links markup. The second option is to call the PRR()
function in your markup definition or inside your markup function. In this case, after your markup is processed, PmWiki will restart all markups from the beginning.
How do I get started writing recipes and creating my own custom markup?
(alternate) Introduction to custom markup for Beginners
How do I make a rule that runs once at the end of all other rule processing?
Use this statement instead of the usual Markup()
call:
$MarkupFrameBase['posteval']['myfooter'] = "\$out = onetimerule(\$out);";
Category: Markup
This page may have a more recent version on pmwiki.org: PmWiki:CustomMarkup, and a talk page: PmWiki:CustomMarkup-Talk.