**Custom Markup Cookbook**
This is just a rough idea of things that can be done via the custom markup
functionality of #301 and #405. It'll be a work in progress.
*HTML Markup Shortcuts*
Rather than having to do things like {quote:text}, you
can define markups as shortcuts (the HTML would go in the custom formatter
section):
*: {quote:{big: big text}} using {quote:%k %a}
*: {quote:{small: small text}} using {quote:%k %a}
*: {quote:{strike: striked text}} using {quote:%k %a}
*Emulating Other Wikis*
Many other Wiki styles implement something like [wiki:page description]. This
can be easily done with a {quote:{wiki: page description}} markup using as a
formatter {quote:%a}.
This can also be combined with an {quote:{anchor: name}} markup (which just
formats as {quote:}) to link to different parts of a wiki page.
That is, {quote:{wiki: page#anchorname}} would cause the browser to skip right
to the {quote:{anchor:anchorname}} markup in the given _page_.
Want a link into the CVS repository without a cumbersome URL?
{quote:{getfile cvstrac/main.c}} with
{quote:%x}. The %x substitution allows you
to use things like {quote:{getfile cvstrac/main.c}} or
{quote:{getfile cvstrac/main.c CVSTrac's main.c}}.
Some wikis implement "verbatim" blocks. This can easily be done with two
separate custom markups, {quote:{verbatim}} and {quote:{endverbatim}} which
respectively generate
andHTML tags. For contrast, {quote:{verbatim}} can use a inline style tag to generate an off-white background such as
. *External Resources* Most external resources will simply be markups as convenient links. The advantage of using a custom markup rather than {quote:{link:}} markups or straight HTML is that if a service changes, you only have to change the custom markup. CPAN module? {quote: {cpan: module}} using {quote:%x}. An external resource section wouldn't be complete without {quote:{google: search terms}} with {quote:%k %a}. *Program Markups* It's possible to write custom markups that call external programs. This isn't always a good idea (from a performance and security perspective), but it may be the only way to do some things. *Note* that some of these examples are simply that, examples, and have *not* be exhaustively auditted from a security perspective. Trvial examples are markups which just run a command and spit out information. Date/time stamps, system information, etc. For example, a trivial {quote: {timestamp}} markup would simply use {quote: /bin/date} as a formatter with no substitution arguments. A more complicated example is a markup to inline something from the CVS repository into the wiki page, such as {quote:{include: cvstrac/main.c}}. Using the formatter {quote: /path/to/include '%r/%k'}, the following script could be used to inline the latest version of any file found under the repository: #!/bin/sh FILE=`/bin/echo $1 | /bin/sed 's/\.\.//g'` /bin/cat <END`/usr/bin/co -q -p $FILE,v 2>/dev/null`