Changes between Version 2 and Version 3 of WikiProcessors


Ignore:
Timestamp:
Nov 26, 2022, 2:16:40 PM (2 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiProcessors

    v2 v3  
    11= Wiki Processors
    22
    3 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''.
     3Processors are WikiMacros that provide alternative markup formats for the [TracWiki Wiki engine]. Processors can be thought of as ''macro functions to process user-edited text''.
    44
    55Wiki processors can be used in any Wiki text throughout Trac, such as:
    66 - [#CodeHighlightingSupport syntax highlighting] or for rendering text verbatim
    7  - rendering [#HTMLrelated Wiki markup inside a context], like inside <div> blocks or <span> or within <td> or <th> table cells
    8  - using an alternative markup syntax, like [wiki:WikiHtml raw HTML] and [wiki:WikiRestructuredText Restructured Text] or [http://www.textism.com/tools/textile/ textile]
     7 - rendering [#HTMLrelated Wiki markup inside a context] such as <div> or <span> blocks or within <td> or <th> table cells
     8 - using an alternative markup syntax, like [WikiHtml raw HTML] and [WikiRestructuredText Restructured Text] or [https://www.booked.net/textism.html textile]
    99
    1010== Using Processors
     
    4040{{{#!td colspan=2 align=center style="border: none"
    4141
    42                 __Example 1__: Inserting raw HTML
     42                '''Example 1''': Inserting raw HTML
    4343}}}
    4444|-----------------------------------------------------------------
     
    6060{{{#!td colspan=2 align=center style="border: none"
    6161
    62      __Example 2__: Highlighted Python code in a <div> block with custom style
     62     '''Example 2''': Highlighted Python code in a <div> block with custom style
    6363}}}
    6464|-----------------------------------------------------------------
     
    9494{{{#!td colspan=2 align=center style="border: none"
    9595
    96      __Example 3__: Searching tickets from a wiki page, by keywords.
     96     '''Example 3''': Searching tickets from a wiki page, by keywords.
    9797}}}
    9898|-----------------------------------------------------------------
     
    142142The following processors are included in the Trac distribution:
    143143
    144 || '''`#!default`''' || Present the text verbatim in a preformatted text block. This is the same as specifying ''no'' processor name (and no `#!`) ||
     144|| '''`#!default`''' || Present the text verbatim in a preformatted text block. This is the same as specifying ''no'' processor name (and no `#!`). ||
    145145|| '''`#!comment`''' || Do not process the text in this section, i.e. contents exist only in the plain text - not in the rendered page. ||
    146 || '''`#!rtl`''' || Introduce a Right-To-Left block with appropriate CSS direction and styling ''(since 0.12.2)'' ||
     146|| '''`#!rtl`''' || Introduce a Right-To-Left block with appropriate CSS direction and styling. ''(since 0.12.2)'' ||
    147147|||| ||
    148148||||= '''[=#HTMLrelated HTML related]''' =||
    149149|| '''`#!html`''' || Insert custom HTML in a wiki page. ||
    150 || '''`#!htmlcomment`''' || Insert an HTML comment in a wiki page (''since 0.12''). ||
     150|| '''`#!htmlcomment`''' || Insert an HTML comment in a wiki page. (''since 0.12'') ||
    151151|| || 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.  ||
    152 || '''`#!div`''' || Wrap an arbitrary Wiki content inside a <div> element (''since 0.11''). ||
    153 || '''`#!span`''' || Wrap an arbitrary Wiki content inside a <span> element (''since 0.11''). ||
    154 || '''`#!td`''' || Wrap an arbitrary Wiki content inside a <td> element (''since 0.12'') ||
    155 || '''`#!th`''' || Wrap an arbitrary Wiki content inside a <th> element (''since 0.12'') ||
    156 || '''`#!tr`''' || Can optionally be used for wrapping `#!td` and `#!th` blocks, either for specifying row attributes or better visual grouping (''since 0.12'') ||
    157 || '''`#!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'') || 
     152|| '''`#!div`''' || Wrap wiki content inside a <div> element. ||
     153|| '''`#!span`''' || Wrap wiki content inside a <span> element. ||
     154|| '''`#!td`''' || Wrap wiki content inside a <td> element. (''since 0.12'') ||
     155|| '''`#!th`''' || Wrap wiki content inside a <th> element. (''since 0.12'') ||
     156|| '''`#!tr`''' || Can optionally be used for wrapping `#!td` and `#!th` blocks, either for specifying row attributes or better visual grouping. (''since 0.12'') ||
     157|| '''`#!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'') ||
    158158|| || See WikiHtml for example usage and more details about these processors. ||
    159159|||| ||
    160160||||= '''Other Markups''' =||
    161161|| '''`#!rst`''' || Trac support for Restructured Text. See WikiRestructuredText. ||
    162 || '''`#!textile`''' || Supported if [http://cheeseshop.python.org/pypi/textile Textile] is installed. See [http://www.textism.com/tools/textile/ a Textile reference]. ||
     162|| '''`#!textile`''' || Supported if [https://pypi.org/project/textile Textile] is installed. See [https://www.booked.net/textism.html a Textile reference]. ||
    163163|||| ||
    164164||||= '''[=#CodeHighlightingSupport Code Highlighting Support]''' =||
    165 || '''`#!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 external software packages for syntax coloring, like [http://pygments.org Pygments]. [[BR]] [[BR]] See TracSyntaxColoring for information about which languages are supported and how to enable support for more languages. ||
    166 |||| ||
     165|| '''`#!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]] || 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. ||
     166|||| ||
     167
     168Since 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.
    167169
    168170Using the MIME type as processor, it is possible to syntax-highlight the same languages that are supported when browsing source code.
     
    173175Some examples:
    174176 {{{
    175 {{{
    176 #!text/html
     177{{{#!text/html
    177178<h1>text</h1>
    178179}}}
     
    181182{{{#!td
    182183The result will be syntax highlighted HTML code:
     184 {{{#!text/html
     185<h1>text</h1>
     186 }}}
     187
     188The same is valid for all other [TracSyntaxColoring#SyntaxColoringSupport mime types supported].
     189}}}
     190}}}
     191{{{#!td
    183192 {{{
    184 #!text/html
    185 <h1>text</h1>
    186  }}}
    187 
    188 The same is valid for all other [TracSyntaxColoring#SyntaxColoringSupport mime types supported].
    189 }}}
    190 }}}
    191 {{{#!td
    192  {{{
    193 {{{
    194 #!diff
     193{{{#!diff
    195194--- Version 55
    196195+++ Version 56
     
    213212{{{#!td
    214213'''`#!diff`''' has a particularly nice renderer:
    215  {{{
    216 #!diff
     214 {{{#!diff
    217215--- Version 55
    218216+++ Version 56
     
    233231}}}
    234232
    235 For more processor macros developed and/or contributed by users, visit the [http://trac-hacks.org/wiki/WikiStart Trac Hacks] community site.
    236 
    237 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.
     233Line numbers can be added to code blocks and lines can be highlighted //(since 1.1.2)//.
     234{{{
     235{{{#!python lineno=3 marks=3,9-10,16
     236def expand_markup(stream, ctxt=None):
     237    """A Genshi stream filter for expanding `genshi.Markup` events.
     238
     239    Note: Expansion may not be possible if the fragment is badly
     240    formed, or partial.
     241    """
     242    for event in stream:
     243        if isinstance(event[1], Markup):
     244            try:
     245                for subevent in HTML(event[1]):
     246                    yield subevent
     247            except ParseError:
     248                yield event
     249        else:
     250            yield event
     251}}}
     252}}}
     253{{{#!python lineno=3 marks=3,9-10,16
     254def expand_markup(stream, ctxt=None):
     255    """A Genshi stream filter for expanding `genshi.Markup` events.
     256
     257    Note: Expansion may not be possible if the fragment is badly
     258    formed, or partial.
     259    """
     260    for event in stream:
     261        if isinstance(event[1], Markup):
     262            try:
     263                for subevent in HTML(event[1]):
     264                    yield subevent
     265            except ParseError:
     266                yield event
     267        else:
     268            yield event
     269}}}
     270
     271For more processor macros developed and/or contributed by users, visit the [https://trac-hacks.org Trac Hacks] community site.
     272
     273Processors are implemented using the same interfaces as Wiki macros, only the usage syntax differs. To develop a processor, see WikiMacros#DevelopingCustomMacros.
    238274
    239275----