VirtualBox

Wiki处理器

处理器是Wiki宏,为Wiki引擎提供替代的标记格式。处理器可以被认为是用于处理用户编辑文本的宏函数

Wiki处理器可以在Trac中的任何Wiki文本中使用,例如

使用处理器

要在文本块上使用处理器,首先使用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标记,因此完全可以嵌套处理器块。您可能希望缩进嵌套块的内容以提高清晰度,在处理内容时,此额外的缩进将被忽略。

示例

维基标记显示

示例1:插入原始HTML

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

这是原始HTML

示例2:在带有自定义样式的<div>块中高亮的Python代码

{{{#!div style="background: #ffd; border: 3px ridge"

This is an example of embedded "code" block:

  {{{
  #!python
  def hello():
      return "world"
  }}}

}}}

这是嵌入式“代码”块的示例

def hello():
    return "world"

示例3:从wiki页面按关键词搜索工单。

{{{
#!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相关
#!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=3marks=3-6marks=3,5,7marks=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',
+        ],
+    },
 )
}}}

#!diff有一个特别好的渲染器

  • 版本

     
    115115    name='TracHelloWorld', version='1.0',
    116116    packages=find_packages(exclude=['*.tests*']),
    117     entry_points = """
    118         [trac.plugins]
    119         helloworld = myplugs.helloworld
    120     """,
     117    entry_points = {
     118        'trac.plugins': [
     119            'helloworld = myplugs.helloworld',
     120        ],
     121    },
    121122)

代码块可以添加行号,并且可以高亮显示行(自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
}}}
 
3def expand_markup(stream, ctxt=None):
4 """A Genshi stream filter for expanding `genshi.Markup` events.
5
6Note: Expansion may not be possible if the fragment is badly
7formed, 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宏WikiHtmlWikiRestructuredTextTrac语法着色Wiki格式化Trac指南

最后修改 2年前 最后修改于2023年6月2日上午10:32:55
注意: 查看 TracWiki 获取使用维基的帮助。

© 2025 Oracle 支持 隐私 / 请勿出售我的信息 使用条款 商标政策 自动化访问礼节