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指南

