Changes between Version 3 and Version 4 of WikiMacros


Ignore:
Timestamp:
Dec 30, 2016, 2:54:47 AM (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiMacros

    v3 v4  
    1 = Trac マクロ = #TracMacros
     1= Trac Macros
    22
    3 [[PageOutline]]
     3[[PageOutline(2-5,Contents,pullout)]]
    44
    5 Trac マクロとは、 Python で書かれた 'カスタム関数' によって Trac の Wiki エンジンを拡張するプラグインです。 WikiFormatting エンジンが利用可能なあらゆるコンテキストにおいて、マクロを使用することによって、動的な HTML データが挿入されます。
     5'''Trac macros''' extend the Trac engine with custom functionality. Macros are a special type of plugin and are written in Python. A macro inserts dynamic HTML data in any context supporting WikiFormatting.
    66
    7 もう 1 種類のマクロは WikiProcessors です。これは通常、 Wiki 以外のマークアップ形式と表示を取り扱うために使用し、多くは、 (ソースコードハイライトのような) より大きいブロックに使用します。
     7The macro syntax is `[[macro-name(optional-arguments)]]`.
    88
    9 == マクロの利用 == #UsingMacros
     9'''WikiProcessors''' are another kind of macros. They are typically used for source code highlighting, such as `!#python` or `!#apache` and when the source code spans multiple lines, such as:
    1010
    11 マクロ呼び出しは、二つの ''角括弧 (square brackets) '' で括られた箇所です。 Python 関数のように、マクロは引数を取ることができ、括弧 (parenthesis) の中に、カンマで区切ったリストで表記します。
     11{{{
     12{{{#!wiki-processor-name
     13...
     14}}}
     15}}}
    1216
    13 === 詳細なヘルプを見るには === #GettingDetailedHelp
    14 マクロの一覧と完全なヘルプは、 下記の[#AvailableMacros マクロ一覧] にある !MacroList マクロを使用してみることができます。
     17== Using Macros
    1518
    16 簡単なマクロ一覧は `[[MacroList(*)]]` や `[[?]]` で見ることができます。
     19Macro calls are enclosed in double-square brackets `[[..]]`. Like Python functions, macros can have arguments, which is then a comma separated list within parentheses `[[..(,)]]`.
    1720
    18 特定のマクロの詳細なヘルプを参照したい場合は、 !MacroList マクロに引数渡すことによって参照することができます。 例) `[[MacroList(MacroList)]]` 。もしくは、便宜上、 `[[MacroList?]]` のようにマクロ名にクエスチョンマーク ('?') をつけることでヘルプをみることができます。
     21=== Getting Detailed Help
    1922
     23The list of available macros and the full help can be obtained using the !MacroList macro, as seen [#AvailableMacros below].
    2024
     25A brief list can be obtained via `[[MacroList(*)]]` or `[[?]]`.
    2126
    22 === 利用例 === #Example
     27Detailed help on a specific macro can be obtained by passing it as an argument to !MacroList, e.g. `[[MacroList(MacroList)]]`, or, more conveniently, by appending a question mark (`?`) to the macro's name, like in `[[MacroList?]]`.
    2328
    24 'Trac' で始まる Wiki ページの最近の変更履歴 3 件分を表示するマクロです:
     29=== Example
    2530
    26 ||= Wiki マークアップ =||= 表示 =||
     31A list of the 3 most recently changed wiki pages starting with 'Trac':
     32
     33||= Wiki Markup =||= Display =||
    2734{{{#!td
    2835  {{{
     
    4956}}}
    5057{{{#!td style="padding-left: 2em"
    51 {{{#!html
    52 <div style="font-size: 80%" class="trac-macrolist">
    53 <h3><code>[[Image]]</code></h3>画像を Wiki 形式のテキストに組み込みます。
     58{{{#!html 
     59<div class="trac-macrolist">
     60<h3><code>[[Image]]</code></h3>Embed an image in wiki-formatted text.
    5461
    55 1 番目の引数は、ファイル名を指定します。ファイルの指定は添付ファイルなど …
    56 <h3><code>[[InterTrac]]</code></h3>既知の <a class="wiki" href="/wiki/InterTrac">InterTrac</a> プレフィックスをリスト形式で表示します。
    57 <h3><code>[[InterWiki]]</code></h3>既知の <a class="wiki" href="/wiki/InterWiki">InterWiki</a> プレフィックスに関する概要のリストを表示します。
    58 <h3><code>[[KnownMimeTypes]]</code></h3><a class="wiki" href="/wiki/WikiProcessors">WikiProcessors</a> で処理できる既知の mime-type を表示します。
    59 引数が与えられた場合は、 mime-type ...</div>
     62The first argument is the file, as in <code>[[Image(filename.png)]]</code>
     63<h3><code>[[InterTrac]]</code></h3>Provide a list of known <a class="wiki" href="/wiki/InterTrac">InterTrac</a> prefixes.
     64<h3><code>[[InterWiki]]</code></h3>Provide a description list for the known <a class="wiki" href="/wiki/InterWiki">InterWiki</a> prefixes.
     65<h3><code>[[KnownMimeTypes]]</code></h3>List all known mime-types which can be used as <a class="wiki" href="/wiki/WikiProcessors">WikiProcessors</a>.
     66</div>
    6067}}}
    6168etc.
    6269}}}
    6370
    64 == マクロ一覧 == #AvailableMacros
     71== Available Macros
    6572
    66 ''Note: 以下に示すリストはマクロドキュメントを含むものだけです。 `-OO` による最適化や、 [wiki:TracModPython mod_python] での `PythonOptimize` オプションが設定されていると表示されません。''
     73''Note that the following list will only contain the macro documentation if you've not enabled `-OO` optimizations, or not set the `PythonOptimize` option for [wiki:TracModPython mod_python].''
    6774
    6875[[MacroList]]
    6976
    70 == 世界のマクロを共有 == #Macrosfromaroundtheworld
     77== Macros from around the world
    7178
    72 [http://trac-hacks.org/ Trac Hacks] というサイトは、コミュニティに寄稿されたマクロと [TracPlugins プラグイン] を収集し提供しています。新しいマクロを探している、共有したいマクロを作成した、などの場合は遠慮なく Trac Hacks のサイトを訪問してください。
     79The [http://trac-hacks.org/ Trac Hacks] site provides a wide collection of macros and other Trac [TracPlugins plugins] contributed by the Trac community. If you are looking for new macros, or have written one that you would like to share, please visit that site.
    7380
    74 == カスタムマクロを開発する == #DevelopingCustomMacros
    75 マクロは、 Trac 本体と同様 [http://python.org/ Python] で書かれています。そして TracPlugins の一種として開発します。
     81== Developing Custom Macros
    7682
    77 マクロの開発についての詳しい情報は [trac:TracDev リソースの開発] を参照してください。
     83Macros, like Trac itself, are written in the [http://python.org/ Python programming language] and are developed as part of TracPlugins.
    7884
     85For more information about developing macros, see the [trac:TracDev development resources] on the main project site.
    7986
    80 Trac 0.11 でマクロを作成する簡単な例を 2 つ紹介します。
     87Here are 2 simple examples showing how to create a Macro. Also, have a look at [trac:source:tags/trac-1.0.2/sample-plugins/Timestamp.py Timestamp.py] for an example that shows the difference between old style and new style macros and at the [trac:source:tags/trac-0.11/wiki-macros/README macros/README] which provides more insight about the transition.
    8188
    82 古いマクロと新しいマクロの違いを示す例は [http://trac.edgewall.org/browser/tags/trac-0.11/sample-plugins/Timestamp.py Timestamp.py] を参照してください。また、古いマクロから新しいマクロに移行するための情報は [http://trac.edgewall.org/browser/tags/trac-0.11/wiki-macros/README macros/README] を参照してください。
     89=== Macro without arguments
    8390
    84 === 引数なしのマクロ === #Macrowithoutarguments
    85 下記のソースコードをテストするためには、このソースコードを `timestamp_sample.py` として保存し、 TracEnvironment の `plugins/` に配置しなければなりません。
    86 {{{
    87 #!python
     91To test the following code, save it in a `timestamp_sample.py` file located in the TracEnvironment's `plugins/` directory.
     92
     93{{{#!python
    8894from datetime import datetime
    8995# Note: since Trac 0.11, datetime objects are used internally
     
    102108    def expand_macro(self, formatter, name, text):
    103109        t = datetime.now(utc)
    104         return tag.b(format_datetime(t, '%c'))
     110        return tag.strong(format_datetime(t, '%c'))
    105111}}}
    106112
    107 === 引数付きのマクロ === #Macrowitharguments
    108 下記のソースコードをテストするためには、このソースコードを `helloworld_sample.py` として保存し、 TracEnvironment の `plugins/` に配置しなければなりません。
    109 {{{
    110 #!python
     113=== Macro with arguments
     114
     115To test the following code, save it in a `helloworld_sample.py` file located in the TracEnvironment's `plugins/` directory.
     116
     117{{{#!python
    111118from genshi.core import Markup
    112119
     
    144151}}}
    145152
    146 Note: `expand_macro` は 第4パラメータに、 ''`args`'' を任意に取ることもできます。 このマクロが [WikiProcessors WikiProcessor] として呼ばれたとき、 `key=value` 形式の [WikiProcessors#UsingProcessors プロセッサパラメータ] を渡すことも可能です。もし、このパラメータを指定したとき、これらの値は、ディクショナリの中に保存され、 追加の `args` パラメータによって渡されます。一方で、マクロとして呼び出されたときは、 `args` パラメータは、 `None` として扱われます (''0.12 以降'') 。
     153Note that `expand_macro` optionally takes a 4^th^ parameter ''`args`''. When the macro is called as a [WikiProcessors WikiProcessor], it is also possible to pass `key=value` [WikiProcessors#UsingProcessors processor parameters]. If given, those are stored in a dictionary and passed in this extra `args` parameter. In the other case, when called as a macro, `args` is `None`. (''since 0.12'').
    147154
    148 例として、このように記述した場合:
     155For example, when writing:
    149156{{{
    150157{{{#!HelloWorld style="polite" -silent verbose
     
    158165[[HelloWorld(<Hello World!>)]]
    159166}}}
    160 結果はこのようになります:
     167
     168One should get:
    161169{{{
    162 Hello World, text = <Hello World!> , args = {'style': u'polite', 'silent': False, 'verbose': True}
    163 Hello World, text = <Hello World!> , args = {}
    164 Hello World, text = <Hello World!> , args = None
     170Hello World, text = <Hello World!>, args = {'style': u'polite', 'silent': False, 'verbose': True}
     171Hello World, text = <Hello World!>, args = {}
     172Hello World, text = <Hello World!>, args = None
    165173}}}
    166174
    167 Note: `expand_macro` が返す値は、 HTML がエスケープされて '''いない''' ことに注意して下さい。期待する戻り値によっては、あなた自身でエスケープする必要があります (`return Markup.escape(result)` を使用できます)。また、戻り値として HTML が返ってくると分かっているならば、結果を (`return Markup(result)`) という風に Genshi が提供している Markup (`from genshi.core import Markup`) オブジェクトでラップすることもできます。
     175Note that the return value of `expand_macro` is '''not''' HTML escaped. Depending on the expected result, you should escape it yourself (using `return Markup.escape(result)`) or, if this is indeed HTML, wrap it in a Markup object (`return Markup(result)`) with `Markup` coming from Genshi (`from genshi.core import Markup`).
    168176
    169 また、`text` を Wiki としてマークアップする場合、 Wiki Formatter (`from trac.wiki import Formatter`) オブジェクトも再帰的に使用することができます。以下がサンプルです:
     177You can also recursively use a wiki Formatter (`from trac.wiki import Formatter`) to process the `text` as wiki markup:
    170178
    171 {{{
    172 #!python
     179{{{#!python
    173180from genshi.core import Markup
    174181from trac.wiki.macros import WikiMacroBase
     
    177184
    178185class HelloWorldMacro(WikiMacroBase):
    179         def expand_macro(self, formatter, name, text, args):
    180                 text = "whatever '''wiki''' markup you want, even containing other macros"
    181                 # Convert Wiki markup to HTML, new style
    182                 out = StringIO.StringIO()
    183                 Formatter(self.env, formatter.context).format(text, out)
    184                 return Markup(out.getvalue())
     186    def expand_macro(self, formatter, name, text, args):
     187        text = "whatever '''wiki''' markup you want, even containing other macros"
     188        # Convert Wiki markup to HTML, new style
     189        out = StringIO.StringIO()
     190        Formatter(self.env, formatter.context).format(text, out)
     191        return Markup(out.getvalue())
    185192}}}