| |
1 |
= Wiki Processors = |
| |
2 |
Processors are WikiMacros designed to provide alternative markup formats for the Trac Wiki engine. Processors can be thought of as ''macro functions to process user-edited text''. |
| |
3 |
|
| |
4 |
The wiki engine uses processors to allow using [wiki:WikiRestructuredText Restructured Text] and [wiki:WikiHtml raw HTML] in any wiki text throughout Trac. |
| |
5 |
|
| |
6 |
== Using Processors == |
| |
7 |
To use a processor on a block of text, use a wiki blockquote, selecting a processor by name using 'hashbang notation' (#!), familiar to most UNIX users from scripts. |
| |
8 |
|
| |
9 |
'''Example 1''' (''inserting raw HTML in a wiki text''): |
| |
10 |
|
| |
11 |
{{{ |
| |
12 |
#!html |
| |
13 |
<pre class="wiki">{{{ |
| |
14 |
#!html |
| |
15 |
<h1 style="color: orange">This is raw HTML</h1> |
| |
16 |
}}}</pre> |
| |
17 |
}}} |
| |
18 |
|
| |
19 |
'''Results in:''' |
| |
20 |
{{{ |
| |
21 |
#!html |
| |
22 |
<h1 style="color: orange">This is raw HTML</h1> |
| |
23 |
}}} |
| |
24 |
|
| |
25 |
---- |
| |
26 |
|
| |
27 |
'''Example 2''' (''inserting Restructured Text in wiki text''): |
| |
28 |
|
| |
29 |
{{{ |
| |
30 |
#!html |
| |
31 |
<pre class="wiki">{{{ |
| |
32 |
#!rst |
| |
33 |
A header |
| |
34 |
-------- |
| |
35 |
This is some **text** with a footnote [*]_. |
| |
36 |
|
| |
37 |
.. [*] This is the footnote. |
| |
38 |
}}}</pre> |
| |
39 |
}}} |
| |
40 |
|
| |
41 |
'''Results in:''' |
| |
42 |
{{{ |
| |
43 |
#!rst |
| |
44 |
A header |
| |
45 |
-------- |
| |
46 |
This is some **text** with a footnote [*]_. |
| |
47 |
|
| |
48 |
.. [*] This is the footnote. |
| |
49 |
}}} |
| |
50 |
---- |
| |
51 |
'''Example 3''' (''inserting a block of C source code in wiki text''): |
| |
52 |
|
| |
53 |
{{{ |
| |
54 |
#!html |
| |
55 |
<pre class="wiki">{{{ |
| |
56 |
#!c |
| |
57 |
int main(int argc, char *argv[]) |
| |
58 |
{ |
| |
59 |
printf("Hello World\n"); |
| |
60 |
return 0; |
| |
61 |
} |
| |
62 |
}}}</pre> |
| |
63 |
}}} |
| |
64 |
|
| |
65 |
'''Results in:''' |
| |
66 |
{{{ |
| |
67 |
#!c |
| |
68 |
int main(int argc, char *argv[]) |
| |
69 |
{ |
| |
70 |
printf("Hello World\n"); |
| |
71 |
return 0; |
| |
72 |
} |
| |
73 |
}}} |
| |
74 |
|
| |
75 |
---- |
| |
76 |
|
| |
77 |
|
| |
78 |
|
| |
79 |
== Available Processors == |
| |
80 |
The following processors are included in the Trac distribution: |
| |
81 |
* '''html''' -- Insert custom HTML in a wiki page. See WikiHtml. |
| |
82 |
* '''rst''' -- Trac support for Restructured Text. See WikiRestructuredText. |
| |
83 |
* '''textile''' -- Initial support as of aug 2, 2004. See [http://projects.edgewall.com/trac/ticket/593 ticket 593] and [http://dealmeida.net/projects/textile/ Textile]. |
| |
84 |
|
| |
85 |
=== Source Code Support === |
| |
86 |
Trac includes processors to provide inline [wiki:TracSyntaxColoring syntax highlighting] for these languages: |
| |
87 |
* '''c''' -- C |
| |
88 |
* '''cpp''' -- C++ |
| |
89 |
* '''python''' -- Python |
| |
90 |
* '''perl''' -- Perl |
| |
91 |
* '''ruby''' -- Ruby |
| |
92 |
* '''php''' -- PHP |
| |
93 |
* '''asp''' --- ASP |
| |
94 |
* '''sql''' -- SQL |
| |
95 |
* '''xml''' -- XML |
| |
96 |
'''Note:''' ''Trac relies on external software packages for syntax coloring. See TracSyntaxColoring for more info.'' |
| |
97 |
|
| |
98 |
By using the mime-type as processor, it is posible to syntax-highlight the same languages that are supported when browsing source code. (The list of mime-types can be found in [source:trunk/trac/Mimeview.py Mimeview.py]). |
| |
99 |
|
| |
100 |
For example, you can write: |
| |
101 |
|
| |
102 |
{{{ |
| |
103 |
{{{ |
| |
104 |
#!text/html |
| |
105 |
<h1>text</h1> |
| |
106 |
}}} |
| |
107 |
}}} |
| |
108 |
|
| |
109 |
The result will be syntax highlighted html code. The same is valid for all other mime types supported. |
| |
110 |
|
| |
111 |
|
| |
112 |
|
| |
113 |
For more processor macros developed and/or contributed by users, visit the macro bazaar: |
| |
114 |
http://projects.edgewall.com/trac/wiki/MacroBazaar |
| |
115 |
|
| |
116 |
---- |
| |
117 |
== Advanced Topics: Developing Processor Macros == |
| |
118 |
Developing processors is no different than WikiMacros. In fact they work the same way, only the usage syntax differs. See WikiMacros for more information. |
| |
119 |
|
| |
120 |
'''Example:''' (''Restructured Text Processor''): |
| |
121 |
{{{ |
| |
122 |
from docutils.core import publish_string |
| |
123 |
|
| |
124 |
def execute(hdf, text, env): |
| |
125 |
html = publish_string(text, writer_name = 'html') |
| |
126 |
return html[html.find('<body>')+6:html.find('</body>')].strip() |
| |
127 |
}}} |
| |
128 |
|
| |
129 |
---- |
| |
130 |
See also : WikiMacros, WikiHtml, WikiRestructuredText, TracSyntaxColoring, WikiFormatting, TracGuide |