**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
 and 
HTML 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 <          
  `/usr/bin/co -q -p $FILE,v 2>/dev/null`          
  
END The really interesting markup happens when you start to interact with the SQLite database, allowing for things like custom reports and whatnot. The following script can be used to define a {quote:{wikitoc}} markup using {quote: /path/to/wikitoc '%r/%n'}: #!/bin/sh for p in `sqlite $1.db 'SELECT name FROM wiki GROUP BY name ORDER BY name;'` do echo "$p
" done