Apply conversion script to all *.md files. authored by Alexander Hansen Færøy's avatar Alexander Hansen Færøy
= 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''.
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_.
Wiki processors can be used in any Wiki text throughout Trac, such as:
- [#CodeHighlightingSupport syntax highlighting] or for rendering text verbatim
- rendering [#HTMLrelated Wiki markup inside a context], like inside <div> blocks or <span> or within <td> or <th> table cells
- using an alternative markup syntax, like [WikiHtml raw HTML] and [WikiRestructuredText Restructured Text] or [http://www.textism.com/tools/textile/ textile]
- using an alternative markup syntax, like [WikiHtml raw HTML] and [WikiRestructuredText Restructured Text] or [textile](http://www.textism.com/tools/textile/)
== Using Processors
To use a processor on a block of text, first delimit the lines using a Wiki ''code block'':
{{{
To use a processor on a block of text, first delimit the lines using a Wiki _code block_:
```
{{{
The lines
that should be processed...
}}}
```
}}}
Immediately after the `{{{` or on the line just below, add `#!` followed by the ''processor name'':
Immediately after the `{{{` or on the line just below, add `#!` followed by the _processor name_:
{{{
```
{{{
#!processorname
The lines
that should be processed...
}}}
```
}}}
This is the "shebang" notation, familiar to most UNIX users.
Besides their content, some Wiki processors can also accept ''parameters'', which are then given as `key=value` pairs after the processor name and on the same line. If `value` has to contain space, as it's often the case for the style parameter, a quoted string can be used (`key="value with space"`).
Besides their content, some Wiki processors can also accept _parameters_, which are then given as `key=value` pairs after the processor name and on the same line. If `value` has to contain space, as it's often the case for the style parameter, a quoted string can be used (`key="value with space"`).
As some processors are meant to process Wiki markup, it's quite possible to ''nest'' processor blocks.
As some processors are meant to process Wiki markup, it's quite possible to _nest_ processor blocks.
You may want to indent the content of nested blocks for increased clarity, this extra indentation will be ignored when processing the content.
== Examples
||= Wiki Markup =||= Display =||
{{{#!td colspan=2 align=center style="border: none"
|= Wiki Markup =|= Display =|
|---------------|-----------|
```
__Example 1__: Inserting raw HTML
}}}
```
|-----------------------------------------------------------------
{{{#!td style="border: none"
```
{{{
{{{
#!html
<h1 style="color: grey">This is raw HTML</h1>
```
}}}
}}}
}}}
{{{#!td valign=top style="border: none; padding-left: 2em"
```
{{{
#!html
<h1 style="color: grey">This is raw HTML</h1>
}}}
```
}}}
|-----------------------------------------------------------------
{{{#!td colspan=2 align=center style="border: none"
```
__Example 2__: Highlighted Python code in a <div> block with custom style
}}}
```
|-----------------------------------------------------------------
{{{#!td style="border: none"
```
{{{
{{{#!div style="background: #ffd; border: 3px ridge"
......@@ -76,8 +77,8 @@ You may want to indent the content of nested blocks for increased clarity, this
}}}
}}}
}}}
{{{#!td valign=top style="border: none; padding: 1em"
```
```
{{{#!div style="background: #ffd; border: 3px ridge"
This is an example of embedded "code" block:
......@@ -89,14 +90,14 @@ You may want to indent the content of nested blocks for increased clarity, this
}}}
}}}
}}}
```
|-----------------------------------------------------------------
{{{#!td colspan=2 align=center style="border: none"
```
__Example 3__: Searching tickets from a wiki page, by keywords.
}}}
```
|-----------------------------------------------------------------
{{{#!td style="border: none"
```
{{{
{{{
#!html
......@@ -116,8 +117,8 @@ You may want to indent the content of nested blocks for increased clarity, this
</div></form>
}}}
}}}
}}}
{{{#!td valign=top style="border: none; padding: 1em"
```
```
{{{
#!html
<form action="/query" method="get"><div>
......@@ -135,60 +136,80 @@ You may want to indent the content of nested blocks for increased clarity, this
-->
</div></form>
}}}
}}}
```
== Available Processors
The following processors are included in the Trac distribution:
|| '''`#!default`''' || Present the text verbatim in a preformatted text block. This is the same as specifying ''no'' processor name (and no `#!`). ||
|| '''`#!comment`''' || Do not process the text in this section, i.e. contents exist only in the plain text - not in the rendered page. ||
|| '''`#!rtl`''' || Introduce a Right-To-Left block with appropriate CSS direction and styling. ''(since 0.12.2)'' ||
|||| ||
||||= '''[=#HTMLrelated HTML related]''' =||
|| '''`#!html`''' || Insert custom HTML in a wiki page. ||
|| '''`#!htmlcomment`''' || Insert an HTML comment in a wiki page. (''since 0.12'') ||
|| || Note that `#!html` blocks have to be ''self-contained'', i.e. you can't start an HTML element in one block and close it later in a second block. Use the following processors for achieving a similar effect. ||
|| '''`#!div`''' || Wrap wiki content inside a <div> element. ||
|| '''`#!span`''' || Wrap wiki content inside a <span> element. ||
|| '''`#!td`''' || Wrap wiki content inside a <td> element. (''since 0.12'') ||
|| '''`#!th`''' || Wrap wiki content inside a <th> element. (''since 0.12'') ||
|| '''`#!tr`''' || Can optionally be used for wrapping `#!td` and `#!th` blocks, either for specifying row attributes or better visual grouping. (''since 0.12'') ||
|| '''`#!table`''' || Can optionally be used for wrapping `#!tr`, `#!td` and `#!th` blocks, for specifying table attributes. One current limitation however is that tables cannot be nested. (''since 0.12'') ||
|| || See WikiHtml for example usage and more details about these processors. ||
|||| ||
||||= '''Other Markups''' =||
|| '''`#!rst`''' || Trac support for Restructured Text. See WikiRestructuredText. ||
|| '''`#!textile`''' || Supported if [http://cheeseshop.python.org/pypi/textile Textile] is installed. See [http://www.textism.com/tools/textile/ a Textile reference]. ||
|||| ||
||||= '''[=#CodeHighlightingSupport Code Highlighting Support]''' =||
|| '''`#!c`''' [[BR]] '''`#!cpp`''' (C++) [[BR]] '''`#!python`''' [[BR]] '''`#!perl`''' [[BR]] '''`#!ruby`''' [[BR]] '''`#!php`''' [[BR]] '''`#!asp`''' [[BR]] '''`#!java`''' [[BR]] '''`#!js`''' (Javascript) [[BR]] '''`#!sql`''' [[BR]] '''`#!xml`''' (XML or HTML) [[BR]] '''`#!sh`''' (!Bourne/Bash shell) [[BR]] '''etc.''' [[BR]] || Trac includes processors to provide inline syntax highlighting for source code in various languages. [[BR]] [[BR]] Trac relies on [http://pygments.org Pygments] for syntax coloring. [[BR]] [[BR]] See TracSyntaxColoring for information about which languages are supported and how to enable support for more languages. ||
|||| ||
| **`#!default`** | Present the text verbatim in a preformatted text block. This is the same as specifying _no_ processor name (and no `#!`). |
|-----------------|---------------------------------------------------------------------------------------------------------------------------|
| **`#!comment`** | Do not process the text in this section, i.e. contents exist only in the plain text - not in the rendered page. |
| **`#!rtl`** | Introduce a Right-To-Left block with appropriate CSS direction and styling. _(since 0.12.2)_ |
|| |
||= **[=#HTMLrelated HTML related]** =|
| **`#!html`** | Insert custom HTML in a wiki page. |
| **`#!htmlcomment`** | Insert an HTML comment in a wiki page. (_since 0.12_) |
| | Note that `#!html` blocks have to be _self-contained_, i.e. you can't start an HTML element in one block and close it later in a second block. Use the following processors for achieving a similar effect. |
| **`#!div`** | Wrap wiki content inside a <div> element. |
| **`#!span`** | Wrap wiki content inside a <span> element. |
| **`#!td`** | Wrap wiki content inside a <td> element. (_since 0.12_) |
| **`#!th`** | Wrap wiki content inside a <th> element. (_since 0.12_) |
| **`#!tr`** | Can optionally be used for wrapping `#!td` and `#!th` blocks, either for specifying row attributes or better visual grouping. (_since 0.12_) |
| **`#!table`** | Can optionally be used for wrapping `#!tr`, `#!td` and `#!th` blocks, for specifying table attributes. One current limitation however is that tables cannot be nested. (_since 0.12_) |
| | See WikiHtml for example usage and more details about these processors. |
|| |
||= **Other Markups** =|
| **`#!rst`** | Trac support for Restructured Text. See WikiRestructuredText. |
| **`#!textile`** | Supported if [Textile](http://cheeseshop.python.org/pypi/textile) is installed. See [a Textile reference](http://www.textism.com/tools/textile/). |
|| |
||= **[=#CodeHighlightingSupport Code Highlighting Support]** =|
| **`#!c`**
**`#!cpp`** (C++)
**`#!python`**
**`#!perl`**
**`#!ruby`**
**`#!php`**
**`#!asp`**
**`#!java`**
**`#!js`** (Javascript)
**`#!sql`**
**`#!xml`** (XML or HTML)
**`#!sh`** (!Bourne/Bash shell)
**etc.**
|| Trac includes processors to provide inline syntax highlighting for source code in various languages.
Trac relies on [Pygments](http://pygments.org) for syntax coloring.
See TracSyntaxColoring for information about which languages are supported and how to enable support for more languages. ||
|| |
||-|
Since 1.1.2 the default, coding highlighting and MIME-type processors support the argument `lineno` for adding line numbering to the code block. When a value is specified, as in `lineno=3`, the numbering will start at the specified value. When used in combination with the `lineno` argument, the `marks` argument is also supported for highlighting lines. A single line number, set of line numbers and range of line numbers are allowed. For example, `marks=3`, `marks=3-6`, `marks=3,5,7` and `marks=3-5,7` are all allowed. The specified values are relative to the numbered lines, so if `lineno=2` is specified to start the line numbering at 2, `marks=2` will result in the first line being highlighted.
Using the MIME type as processor, it is possible to syntax-highlight the same languages that are supported when browsing source code.
||||= '''MIME Type Processors''' =||
{{{#!tr
||= **MIME Type Processors** =|
||----------------------------|
```
{{{#!td
Some examples:
{{{
{{{#!text/html
<h1>text</h1>
```
}}}
}}}
}}}
{{{#!td
```
The result will be syntax highlighted HTML code:
{{{#!text/html
<h1>text</h1>
}}}
The same is valid for all other [TracSyntaxColoring#SyntaxColoringSupport mime types supported].
```
}}}
}}}
{{{#!td
```
{{{
{{{#!diff
--- Version 55
......@@ -206,11 +227,11 @@ The same is valid for all other [TracSyntaxColoring#SyntaxColoringSupport mime t
+ ],
+ },
)
```
}}}
}}}
}}}
{{{#!td
'''`#!diff`''' has a particularly nice renderer:
```
**`#!diff`** has a particularly nice renderer:
{{{#!diff
--- Version 55
+++ Version 56
......@@ -228,10 +249,10 @@ The same is valid for all other [TracSyntaxColoring#SyntaxColoringSupport mime t
+ },
)
}}}
}}}
```
Line numbers can be added to code blocks and lines can be highlighted //(since 1.1.2)//.
{{{
```
{{{#!python lineno=3 marks=3,9-10,16
def expand_markup(stream, ctxt=None):
"""A Genshi stream filter for expanding `genshi.Markup` events.
......@@ -248,9 +269,9 @@ def expand_markup(stream, ctxt=None):
yield event
else:
yield event
```
}}}
}}}
{{{#!python lineno=3 marks=3,9-10,16
```
def expand_markup(stream, ctxt=None):
"""A Genshi stream filter for expanding `genshi.Markup` events.
......@@ -266,9 +287,9 @@ def expand_markup(stream, ctxt=None):
yield event
else:
yield event
}}}
```
For more processor macros developed and/or contributed by users, visit the [https://trac-hacks.org Trac Hacks] community site.
For more processor macros developed and/or contributed by users, visit the [Trac Hacks](https://trac-hacks.org) community site.
Developing processors is no different from Wiki macros. In fact, they work the same way, only the usage syntax differs. See WikiMacros#DevelopingCustomMacros for more information.
......
......