[Pmwiki-users] PmWiki 2 custom markup, draft 1

John Rankin john.rankin
Sun Sep 5 19:00:43 CDT 2004


On Thursday, 2 September 2004 1:47 AM, Patrick R. Michaud <pmichaud at pobox.com> wrote:
>This message briefly describes how one goes about adding custom markup
>in PmWiki 2.0.  I'm also adding this as the PmWiki.CustomMarkup page
>on pmwiki.org, so changes can go there.
>
>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.
>
>Rules are added to the translation engine via PmWiki's Markup() function,
>which looks like
>
>   Markup($name,$when,$pattern,$replace)
>
>where $name is a unique name (a string) given to the rule, 
>      $when says when the rule should be applied relative to other rules, 
>      $pattern is the pattern to be searched for in the markup text, and
>      $replace is what the pattern should be replaced with.
>
This looks superb!

Let me test a scenario, which appears not easy in 1 (?) but entirely
possible in 2.

An author wants to insert a

    [:newpage:]

directive to break up a long page into readable chunks.

In printable view, the reader sees the whole page and [:newpage:]
directives are simply ignored.

In browse view, pmwiki initially displays the text up to the first
[:newpage:] directive, plus a 

    Page 1 2 3 ...

line. 1 is just 1; 2 is a link to page 2 (contents between the first 
and second [:newpage:] directives), and so on. Clicking on 2 displays
page 2, with a link back to page 1 and on to pages 3, 4 etc. It would
generate a list of page number links based on the number of [:newpage:]
directives found.

So with PmWiki 2, it's something like:

    Markup("newpage",">include","/\\[:newpage:\\]/e", then I get lost...

I'd want to execute

    if (strstr($Text,'[:newpage:]')) $Text = NewpageDirectives($Text);

after include processing but before other directive processing.
The NewpageDirectives function seems pretty trivial.

So how do I invoke this?

-- 
JR
--
John Rankin





More information about the pmwiki-users mailing list