**Custom Markup Cookbook** This is just a rough idea of things that can be done via the custom markup functionality of #301. It's 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}. 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}}. *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 < `/usr/bin/co -q -p $FILE,v 2>/dev/null` END