Wiki处理器
处理器是Wiki宏,为Wiki引擎提供替代的标记格式。处理器可以被认为是用于处理用户编辑文本的宏函数。
Wiki处理器可以在Trac中的任何Wiki文本中使用,例如
- 语法高亮或逐字呈现文本
- 在特定上下文中(例如<div>或<span>块中,或在<td>或<th>表格单元格内)呈现Wiki标记
- 使用替代标记语法,例如原始HTML和Restructured Text或textile
使用处理器
要在文本块上使用处理器,首先使用Wiki代码块来界定这些行
{{{ The lines that should be processed... }}}
紧接在{{{
之后或在其正下方的一行,添加#!
,后跟处理器名称
{{{ #!processorname The lines that should be processed... }}}
这是“shebang”符号,大多数UNIX用户都熟悉。
除了内容之外,一些Wiki处理器还可以接受参数,这些参数以key=value
对的形式在处理器名称之后并在同一行给出。如果value
必须包含空格(样式参数通常如此),可以使用带引号的字符串(例如key="value with space"
)。
由于某些处理器旨在处理Wiki标记,因此完全可以嵌套处理器块。您可能希望缩进嵌套块的内容以提高清晰度,在处理内容时,此额外的缩进将被忽略。
示例
维基标记 | 显示 |
---|---|
| |
{{{ #!html <h1 style="color: grey">This is raw HTML</h1> }}} | 这是原始HTML |
| |
{{{#!div style="background: #ffd; border: 3px ridge" This is an example of embedded "code" block: {{{ #!python def hello(): return "world" }}} }}} | 这是嵌入式“代码”块的示例 def hello(): return "world" |
| |
{{{ #!html <form action="/query" method="get"><div> <input type="text" name="keywords" value="~" size="30"/> <input type="submit" value="Search by Keywords"/> <!-- To control what fields show up use hidden fields <input type="hidden" name="col" value="id"/> <input type="hidden" name="col" value="summary"/> <input type="hidden" name="col" value="status"/> <input type="hidden" name="col" value="milestone"/> <input type="hidden" name="col" value="version"/> <input type="hidden" name="col" value="owner"/> <input type="hidden" name="col" value="priority"/> <input type="hidden" name="col" value="component"/> --> </div></form> }}} |
可用处理器
以下处理器包含在Trac发行版中
#!default | 在预格式化文本块中逐字呈现文本。这与未指定任何处理器名称(且无#! )的效果相同。 |
#!comment | 不处理此段中的文本,即内容仅存在于纯文本中 - 不会呈现在渲染后的页面中。 |
#!rtl | 引入一个从右到左的块,带有适当的CSS方向和样式。(自0.12.2版起) |
#!html | 在wiki页面中插入自定义HTML。 |
#!htmlcomment | 在wiki页面中插入HTML注释。(自0.12版起) |
请注意,#!html 块必须是自包含的,即您不能在一个块中开始一个HTML元素,然后在第二个块中关闭它。使用以下处理器可以达到类似的效果。 | |
#!div | 将wiki内容包装在<div>元素内。 |
#!span | 将wiki内容包装在<span>元素内。 |
#!td | 将wiki内容包装在<td>元素内。(自0.12版起) |
#!th | 将wiki内容包装在<th>元素内。(自0.12版起) |
#!tr | 可以用于包装#!td 和#!th 块,可选择用于指定行属性或更好的视觉分组。(自0.12版起) |
#!table | 可以用于包装#!tr 、#!td 和#!th 块,用于指定表格属性。然而,当前的一个限制是表格不能嵌套。(自0.12版起) |
请参阅WikiHtml以获取示例用法和这些处理器的更多详细信息。 | |
其他标记 | |
#!rst | Trac对Restructured Text的支持。请参阅WikiRestructuredText。 |
#!textile | 如果安装了Textile,则支持。请参阅Textile参考。 |
代码高亮支持 | |
#!c #!cpp (C++)#!python #!perl #!ruby #!php #!asp #!java #!js (Javascript)#!sql #!xml (XML或HTML)#!sh (Bourne/Bash shell) | Trac包含处理器,用于为各种语言的源代码提供行内语法高亮。 Trac依赖Pygments进行语法着色。 请参阅Trac语法着色,以获取有关支持哪些语言以及如何启用更多语言支持的信息。 |
自1.1.2版起,默认、代码高亮和MIME类型处理器支持lineno
参数,用于为代码块添加行号。当指定一个值(例如lineno=3
)时,行号将从指定值开始。当与lineno
参数结合使用时,还支持marks
参数用于高亮显示行。允许单个行号、一组行号和范围行号。例如,marks=3
、marks=3-6
、marks=3,5,7
和marks=3-5,7
都允许。指定的值是相对于编号的行而言的,因此如果指定lineno=2
从行号2开始编号,那么marks=2
将导致第一行被高亮显示。
使用MIME类型作为处理器,可以语法高亮显示浏览源代码时支持的相同语言。
MIME类型处理器 | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
一些示例 {{{#!text/html <h1>text</h1> }}} | 结果将是语法高亮的HTML代码 <h1>text</h1> 这也适用于所有其他受支持的MIME类型。 | |||||||||||||||||||||||||||||||||||||||
{{{#!diff --- Version 55 +++ Version 56 @@ -115,8 +115,9 @@ name='TracHelloWorld', version='1.0', packages=find_packages(exclude=['*.tests*']), - entry_points = """ - [trac.plugins] - helloworld = myplugs.helloworld - """, + entry_points = { + 'trac.plugins': [ + 'helloworld = myplugs.helloworld', + ], + }, ) }}} |
|
代码块可以添加行号,并且可以高亮显示行(自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. Note: Expansion may not be possible if the fragment is badly formed, or partial. """ for event in stream: if isinstance(event[1], Markup): try: for subevent in HTML(event[1]): yield subevent except ParseError: yield event else: yield event }}}
行 | |
---|---|
3 | def expand_markup(stream, ctxt=None): |
4 | """A Genshi stream filter for expanding `genshi.Markup` events. |
5 | |
6 | Note: Expansion may not be possible if the fragment is badly |
7 | formed, or partial. |
8 | """ |
9 | for event in stream: |
10 | if isinstance(event[1], Markup): |
11 | try: |
12 | for subevent in HTML(event[1]): |
13 | yield subevent |
14 | except ParseError: |
15 | yield event |
16 | else: |
17 | yield event |
更多由用户开发和/或贡献的处理器宏,请访问Trac Hacks社区网站。
处理器使用与Wiki宏相同的接口实现,仅使用语法不同。要开发处理器,请参阅WikiMacros#DevelopingCustomMacros。
另请参阅:Wiki宏,WikiHtml,WikiRestructuredText,Trac语法着色,Wiki格式化,Trac指南