====== Wiki Processors ====== Processors are WikiMacros designed to provide alternative markup formats for the [[:TracWiki|Wiki engine]]. Processors can be thought of as //macro functions to process user-edited text//. The Wiki engine uses processors to allow using [[WikiRestructuredText|Restructured Text]], [[WikiHtml|raw HTML]] and [[http://www.textism.com/tools/textile/|textile]] in any Wiki text throughout Trac. ===== Using Processors ===== To use a processor on a block of text, use a Wiki code block, selecting a processor by name using //shebang notation// (#!), familiar to most UNIX users from scripts. **Example 1** (//inserting raw HTML in a wiki text//): #!html

#!html
<h1 style="color: orange">This is raw HTML</h1>

**Results in:** #!html

This is raw HTML

---- **Example 2** (//inserting Restructured Text in wiki text//): #!html

#!rst
A header
--------
This is some **text** with a footnote [[:*]]_.

.. [[:*]] This is the footnote.

**Results in:** #!rst A header -------- This is some **text** with a footnote [[:*]]_. .. [[:*]] This is the footnote. ---- **Example 3** (//inserting a block of C source code in wiki text//): #!html

#!c
int main(int argc, char *argv[])
{
  printf("Hello World\n");
  return 0;
}

**Results in:** #!c int main(int argc, char *argv[]) { printf("Hello World\n"); return 0; } ---- ===== Available Processors ===== The following processors are included in the Trac distribution: * **html** -- Insert custom HTML in a wiki page. See WikiHtml. * **rst** -- Trac support for Restructured Text. See WikiRestructuredText. * **textile** -- Supported if [[http://dealmeida.net/projects/textile/|Textile]] is installed. See [[http://hobix.com/textile/|a Textile reference]]. Textile link above is rotten. [[http://www.textism.com/tools/textile/|this one]] works, allows to test example. ==== Code Highlighting Support ==== Trac includes processors to provide inline [[:TracSyntaxColoring|syntax highlighting]] for the following languages: * **c** -- C * **cpp** -- C++ * **python** -- Python * **perl** -- Perl * **ruby** -- Ruby * **php** -- PHP * **asp** --- ASP * **sql** -- SQL * **xml** -- XML **Note:** //Trac relies on external software packages for syntax coloring. See TracSyntaxColoring for more info.// By using the MIME type as processor, it is possible to syntax-highlight the same languages that are supported when browsing source code. For example, you can write: #!text/html

text

The result will be syntax highlighted HTML code. The same is valid for all other mime types supported. For more processor macros developed and/or contributed by users, visit: * [[http://projects.edgewall.com/trac/wiki/ProcessorBazaar|ProcessorBazaar]] * [[http://projects.edgewall.com/trac/wiki/MacroBazaar|MacroBazaar]] ===== Advanced Topics: Developing Processor Macros ===== Developing processors is no different from WikiMacros. In fact they work the same way, only the usage syntax differs. See WikiMacros for more information. **Example:** (//Restructured Text Processor//): #!python from docutils.core import publish_string def execute(hdf, text, env): html = publish_string(text, writer_name = 'html') return html[[:html.find('')+6:html.find('<:body>')]].strip() ---- See also: WikiMacros, WikiHtml, WikiRestructuredText, TracSyntaxColoring, WikiFormatting, TracGuide