blockdiag シリーズの trac plugin を書いた

blockdiag シリーズがすごく良かったので trac で使うべくプラグインを書きました。
github で公開しています。

0.1.0 には日本語を含むソースを書くと wikiレンダリングできない残念なバグがあるので既にインストールして頂いた方は 0.1.1 にアップデートしてください。

既に TracBlockDiagPlugin がありましたが、たまに画像が表示されないことがあったので自分で作ることにしました。今のところマクロ構文は TracBlockDiagPlugin を踏襲しています。

バグや要望があれば連絡いただけると助かります。もちろん fork して改造してくださっても結構です。pull requests を頂ければ大変喜びます。

ここにはインストール方法や使い方などを書いておきます。なんか README の邦訳みたいになっていますが、日本語ネイティブなのでむしろ README の英語があやしすぎます。

特徴

TracBlockdiag の特徴など。

  • blockdiag の大半の機能をサポート(fontmap には未対応)
  • PNG/SVG での出力が可能
  • 高速な wiki レンダリング(図は img タグでアクセス時に生成される)
  • 生成された画像への直リンクが可能
  • stateless なので multi-thread/multi-process でも安心安全
  • インストール済みの *diag だけ macro を有効化
  • 外部プロセスを呼ばずに内部で処理するので不要なファイルを作らない

動作環境

trac 0.11 対応はおまけみたいなものなので、できるだけ 0.12 以上を使ってください。

インストール

インストールは普通の trac plugin と変わりません。

リポジトリを clone します。git-flow を使っているので master ブランチは常にリリース版です。安心してお使いください。

$ git clone https://github.com/yosisa/TracBlockdiag.git
$ cd TracBlockdiag

システムワイドに入れるには以下のようにします。

$ python setup.py install

特定の trac env に入れるなら egg を作ってコピーします。

$ python setup.py bdist_egg
$ cp dist/*.egg /path/to/tracenv/plugins

管理画面や trac.ini でプラグインを有効にしてください。

プラグインのインストールが終わったら、使いたい blockdiag シリーズをインストールします。
全部使いたい場合は以下のようにすればいいです。

$ pip install blockdiag seqdiag actdiag nwdiag

nwdiag を使うなら cisco の追加 shape が素敵なのでこれも入れておきましょう。 ::

$ pip install blockdiagcontrib-cisco

以上でインストールは終了です。

使い方

trac 0.12 向けの説明です。0.11 な方は README_ を参照してください。

マクロ構文は以下のようになっています。type のデフォルトは png です。

{{{#!(block|seq|act|nw|rack)diag [type=(png|svg)] [IMG_TAG_ATTR=VALUE ...]
*DIAG_SOURCE_TEXT
}}}

具体例

{{{#!blockdiag
{
A -> B -> C;
B -> D;
}
}}}

これは blockdiag を使って png 画像を生成します。

png は重いので可能なら svg を使いましょう。

{{{#!blockdiag type=svg width=800px
{
A -> B -> C;
B -> D;
}
}}}

width=800px は img タグにくっつきます。height とかももちろん指定できます。

以上です。それでは、楽しい blockdiag life を!