Wiki マクロ
Wiki マクロとは、 Python で書かれた 'カスタム関数' によって Trac の Wiki エンジンを拡張するプラグインです。 WikiFormatting エンジンが利用可能なあらゆるコンテキストにおいて、マクロを使用することによって、動的な HTML データが挿入されます。
もう 1 種類のマクロは WikiProcessors です。これは通常、Wiki以外のマークアップ形式と表示を取り扱うために使用し、多くは、 (ソースコードハイライトのような) より大きいブロックに使用します。
マクロの利用
マクロ呼び出しは、二つの 角括弧 (square brackets) で括られた箇所です。 Python 関数のように、マクロは引数を取ることができ、括弧 (parenthesis) の中に、カンマで区切ったリストで表記します。
利用例
[[Timestamp]]
は、以下のように表示されます:
[[HelloWorld(Testing)]]
は、以下のように表示されます:
マクロ一覧
Note: 以下に示すリストはマクロドキュメントを含むものだけです。 -OO による最適化や、 mod_python での PythonOptimize オプションが設定されていると表示されません。
[[InterTrac]]
登録済みの InterTrac プレフィックスの一覧を表示します。
[[TitleIndex]]
すべての Wiki ページをアルファベットのリスト形式で出力に挿入します。
引数として、接頭辞となる文字列を許容します: 指定された場合、 生成されるリストにはページ名が接頭辞で始まるものだけが含まれます。 すべてのページがリストされます。
接頭辞の代わりに format や depth を指定することができます:
- format=group: 共通の接頭辞を持つページでリストを生成します。 またmin=nの引数を使用することができ、nにはリストを生成するページの最少数を指定します。
- depth=n: リストするページの階層数を指定します。 0を指定した場合、トップレベルのページのみ表示され、 1を指定した場合、1代目の子ページが表示されます。 何も指定しない場合か、-1を指定した場合、 全てのページが階層構造により表示されます。
[[RecentChanges]]
最近更新されたすべてのページを最後に変更した日付でグループ化し、リストします。
このマクロは、 2 つの引数をとります。最初の引数はプレフィックスの文字列です: プレフィックスが指定された場合、結果のリストにはそのプレフィックスで始まるページのみが 含まれます。この引数が省略された場合は、すべてのページがリストされます。
2番目の引数は結果リストに表示するページの数を制限するために使用します。 例えば 5 に制限すると指定した場合、最近更新されたページのうち、新しいもの 5 件がリストに含まれます。
[[PageOutline]]
現在の Wiki ページの構造的なアウトラインを表示します。 アウトラインのそれぞれの項目は一致する表題へのリンクとなります。
このマクロは 3 つの任意のパラメータをとります:
- 1 番目の引数はアウトラインに含まれる表題の範囲 (レベル) を設定することができ、 数または数の範囲をとります。 例えば、 "1" と指定した場合、アウトラインにはトップレベルの表題のみが表示されます。 "2-3" と指定した場合、アウトラインには、レベル 2 とレベル 3 のすべての表題が ネストしたリストとして表示されます。 デフォルトでは、すべてのレベルの表題が表示されます。
- 2 番目の引数は、タイトルを特定するのに使われます。 (デフォルトはタイトルなし)
- 3 番目の引数はアウトラインのスタイルを指定します。 inline または pullout を指定することができます (後者がデフォルトです) 。 inline スタイルでは、アウトラインをコンテンツの一部として整形しますが、 pullout スタイルでは、アウトラインをフローティングボックスに整形し、 コンテンツの右側に配置します。
[[Image]]
画像を Wiki 形式のテキストに組み込みます。
1 番目の引数は、ファイル名を指定します。ファイルの指定は添付ファイルなど 3つの指定方法があります:
- module:id:file: module に wiki または ticket が指定すると、 その Wiki ページまたはチケットの添付ファイルで file とファイル名が ついているものを参照します。
- id:file: 上記と同様ですが、 id はチケットの短い記述方法か、 Wiki ページ名を指定します。
- file: 'file' というローカルの添付ファイルを指します。これはファイルが 添付されている Wiki ページまたはチケットの中でのみ使用できます。
またファイルはリポジトリのファイルも指定できます。 source:file シンタックスを使用します。 (source:file@rev も可能です)
直接 URL を記述することもできます; /file と記述すると、プロジェクトの ディレクトリからの相対パスになり、 //file と記述すると、サーバルートからの パスになります。また、 http://server/file ではファイルの絶対パスになります。
残りの引数は任意で、 <img> 要素を組み立てる際の属性を設定します:
- 数字と単位は画像のサイズと解釈されます。 (ex. 120, 25%)
- right, left, top, bottom は画像の配置として 解釈されます。
- link=some TracLinks... を指定すると、画像のソースへのリンクが、 TracLinks に置き換えられます。値なしで引数が指定された場合、 リンクは単に削除されます。
- nolink は画像のソースへのリンクを作成しません。 (非推奨, link= を使用してください)
- key=value スタイルは画像の HTML 属性または CSS スタイルの
指示として解釈されます。有効なキーは以下の通りです:
- align, border, width, height, alt, title, longdesc, class, id および usemap
- border は数値での指定のみ可能です。
例:
[[Image(photo.jpg)]] # シンプルな指定方法 [[Image(photo.jpg, 120px)]] # 画像の幅サイズ指定 [[Image(photo.jpg, right)]] # キーワードによる配置指定 [[Image(photo.jpg, nolink)]] # ソースへのリンクなし [[Image(photo.jpg, align=right)]] # 属性による配置指定
他の wiki ページ、チケット、モジュールの画像を使用することができます。
[[Image(OtherPage:foo.bmp)]] # 現在のモジュールが Wiki の場合 [[Image(base/sub:bar.bmp)]] # 下位の Wiki ページから [[Image(#3:baz.bmp)]] # #3というチケットを指している場合 [[Image(ticket:36:boo.jpg)]] [[Image(source:/images/bee.jpg)]] # リポジトリから直接指定する! [[Image(htdocs:foo/bar.png)]] # プロジェクトの htdocs ディレクトリにあるファイル
このマクロは Shun-ichi Goto <gotoh@…> さんが作成した Image.py が 元になっています
[[MacroList]]
インストールされている、すべての Wiki マクロをリストします。 もし利用可能ならばドキュメントも含みます。
非必須オプションとして、特定のマクロの名前を引数として渡すことが出来ます。 この場合、指定されたマクロのドキュメントだけを表示します。
Note: このマクロは mod_python の PythonOptimize オプションが有効になっている 場合は、マクロのドキュメントを表示することが出来ません!
[[TracIni]]
Trac の設定ファイルのドキュメントを生成します。
通常、このマクロは Wiki ページ TracIni の中で使用されます。 省略可能な引数にはコンフィグのセクションのフィルタ、 コンフィグのオプション名のフィルタを指定できます: フィルタで指定された文字列 で始まるコンフィグのセクションとオプション名のみが出力されます。
[[TracGuideToc]]
このマクロは Wiki ページ一式の目次 (ToC) を簡単かつ荒っぽく作成する 例です。
[[TicketQuery]]
指定された条件にマッチするチケットを一覧表示します。
このマクロの引数はカンマ区切りのリストにした、 "key=value" 形式の キー付きパラメータを使用します。
key がフィールド名であった場合、 value は TracQuery#QueryLanguage で 定義されているような、フィルタを指定するシンタックスでなければなりません。 ? の文字で始まる query: リンクで向けの簡素化した URL シンタックス とは 異なります 。
このほか、フィルタとしていくつか名前付きパラメータを使用できます。 これらは検索結果をどのように表示するかを制御できます。すべて非必須です。
format はチケットのリストがどのように表示されるかを決定します:
- list -- デフォルトの表示形式です。チケット ID と概要 (Summary) を 一覧表示します。 1 行ごとに 1 つのチケットを表示します。
- compact -- チケット ID の一覧をカンマ区切りで 表示します。
- count -- 条件に当てはまるチケットの件数のみが表示されます。
- table -- カスタムクエリービューと似た形式で表示されます (ただし コントロールは表示されません)。
max は表示されるチケット数の上限値を指定します (デフォルトは 0 です。これは無制限を意味します)。
order はチケットを整列順を指定します (デフォルトは id となっています)。
group はチケットをグループ化を指定します (デフォルトは何も設定されていません)。
groupdesc はグループの表示を逆順とするかを指定します (デフォルトは false となっています)。
verbose を true に設定すると、リストされたチケットの 各行にチケットの説明を表示します。これは table format 専用です。 このパラメータは廃止予定です。代わりに rows を使用してください。
rows パラメータは1行使って表示するフィールドを指定します。 rows=description|summary のように使用します。
Trac 0.10 との互換性のため、マクロは第2引数にキーなし引数が与えられた場合 format として解釈します。 また、フィールドセパレータに使用する "&" は、現時点では動作しますが、この機能は廃止予定です。
[[TracAdminHelp]]
trac-admin コマンドのヘルプを表示します。
例:
[[TracAdminHelp]] # 全てのコマンド [[TracAdminHelp(wiki)]] # 全ての wiki コマンド [[TracAdminHelp(wiki export)]] # "wiki export" コマンド [[TracAdminHelp(upgrade)]] # upgrade コマンド
[[BlogList]]
A macro to display list of posts and extracts outside (or inside) the Blog module - most commonly Wiki pages.
All arguments are optional:
[[BlogList]]
Available named arguments:
- recent= - max. number of posts
- category= - a category
- author= - an author
- period= - time period of the format YYYY/MM
- heading= - a heading for the list
- format= - type of display (see below for details)
- max_size= - max. number of characters to render for each post
Example showing some available named arguments:
[[BlogList(recent=5, max_size=250, period=2007/12, author=osimons, format=float, heading=Some Trac Posts)]]
The arguments for criteria are 'AND'-based, so the above example will render at most 5 posts by 'osimons' in December 2007.
There is no heading unless specified.
Without restriction on recent number of posts, it will use the number currently active in the Blog module as default for 'float' and 'full' rendering, but for rendering of 'inline' list it will render all found as default unless restricted. Additionally for 'float' and 'full' it will truncate content if it is larger than a max_size (if set).
The format= keyword argument supports rendering these formats:
format=inline Renders an unordered list in the normal text flow (default). format=float A floating box out on the side of the page with slightly more detail. format=full Full rendering like on period, category and author listings inside blog. The arguments can appear in any order.
Posts are rendered sorted by newest first for all modes.
[[FootNote]]
None
Macros from around the world
The Trac Hacks site provides a wide collection of macros and other Trac plugins contributed by the Trac community. If you're looking for new macros, or have written one that you'd like to share with the world, please don't hesitate to visit that site.
カスタムマクロを開発する
マクロは、 Trac 自身と同じように Python programming language で書かれています。とてもシンプルなモジュールで、たった一つの execute() 関数だけを持ちます。マクロの識別はファイル名で行います。 Trac は、呼び出されたマクロが返却したデータをマクロが呼び出された Wiki ページの HTML に挿入して表示を行います。
最も簡単なマクロの例です:
# MyMacro.py -- The world's simplest macro def execute(hdf, args, env): return "Hello World called with args: %s" % args
Environment (env) オブジェクトを使用することも出来ます。この例では、コンフィグレーションとデータベースにアクセスしています:
def execute(hdf, txt, env): return env.config.get('trac', 'repository_dir')
Note: バージョン 0.9 以降、 Wiki マクロは TracPlugins でも書くことが出来るようになりました。これによって、 HTTP request へのダイレクトアクセスなど、 "古い" マクロでは実現できなかったことが出来るようになりました。
マクロ開発についての詳しい情報は、プロジェクトメインサイトの 開発リソース を参照してください。
See also: WikiProcessors, WikiFormatting, TracGuide