=  Wiki マクロ =
Wiki マクロとは、Python で書かれた 'カスタム関数' によって Trac の Wiki エンジンを拡張するプラグインです。 WikiFormatting エンジンがサポートするあらゆるコンテキストにおいて、マクロを使用することによって、動的なHTMLデータが挿入されます。

もう1種類のマクロは WikiProcessors です。これは通常、Wiki以外のマークアップ形式と表示を取り扱うために使用し、多くは、(ソースコードハイライトのような)より大きいブロックに使用します。参考: WikiProcessors

== マクロの利用 ==
マクロ呼び出しは、二つの ''角括弧 (square brackets) '' で括られた箇所です。Python関数のように、マクロは引数を取ることができ、括弧 (parenthesis) の中に、カンマで区切ったリストで表記します。

=== 利用例 ===

{{{
 [[Timestamp]]
}}}
は、以下のように表示されます:
 [[Timestamp]]

{{{
 [[HelloWorld(Testing)]]
}}}
は、以下のように表示されます:
 [[HelloWorld(Testing)]]


== 利用可能なマクロ ==
マクロは現在のところ新機能の扱いです。利用可能な (そして配布対象となっている) マクロの一覧は、まだそれほど充実していません。
今後の Trac のリリースででは、役に立つマクロライブラリの構築を考えています。マクロを寄贈してもらえるのであれば、喜んで配布に含めます (詳しくは下をご覧下さい) 。

 * '''HelloWorld''' -- マクロの例。これからマクロを書きたいときに参考になります。
 * '''Timestamp''' -- 現在の日時を挿入する。


----


== Macros from around the world ==
The [http://projects.edgewall.com/trac/ Trac Project] has a section dedicated to user-contributed macros, [http://projects.edgewall.com/trac/wiki/MacroBazaar MacroBazaar]. If you're looking for new macros, or have written new ones to share with the world, don't hesitate adding it to the [http://projects.edgewall.com/trac/wiki/MacroBazaar MacroBazaar] wiki page.

  http://projects.edgewall.com/trac/wiki/MacroBazaar


----


== 新しいマクロを開発する ==
マクロは、 Trac 自身と同じように [http://www.python.org/ Python programming language] で書かれています。とてもシンプルなモジュールで、たった一つの ''インタフェース (entry point) '' 関数だけを持ちます。マクロの識別はファイル名で行います。Trac は、呼び出されたマクロが返却したデータをHTMLに挿入して表示を行います。

最も簡単なマクロの例です:
{{{
# MyMacro.py -- The world's simplest macro

def execute(hdf, args, env):
    return "Hello World called with args: %s" % args
}}}

=== 上級トピック: Template-enabled Macros ===
高度な用途のために、マクロでは HDF 形式での構造化出力をサポートしています。これは、 Trac が生成するページと同じように clearSilver テンプレートを使って HTML を生成することができます。要するに、これは普遍的かつ、よく設計された高度なマクロを可能にします。

マクロでは、メインとなる HDF ツリーに直接アクセスし、自由に操作することができます。

例:
{{{
def execute(hdf, args, env):
    # Currently hdf is set only when the macro is called
    # From a wiki page
    if hdf:
        hdf.setValue('wiki.macro.greeting', 'Hello World')
        
    # args will be null if the macro is called without parentesis.
    args = args or 'No arguments'
    return 'Hello World, args = ' + args
}}}

また、environment (env) オブジェクトによって、コンフィグデータへのアクセスも提供されています。

例:
{{{
def execute(hdf, txt, env):
    return env.get_config('trac', 'repository_dir')
}}}
----
参考:  WikiProcessors, WikiFormatting, TracGuide