Hatena::ブログ(Diary)

へきょのーと RSSフィード

2011-07-17

PukiWiki用のblockdiagプラグイン

便利なblockdiag。
各システムに埋め込むためのプラグインがあるようですが
PukiWiki用がなかったので作ってみましたー。

既にあれば無視してください。。

以下、簡単な使い方を。


要件

  • PukiWiki 1.4.6以降
  • blockdiagインストール済
  • nwdiagインストール済
  • seqdiagインストール済
  • actdiagインストール済


ダウンロード

https://github.com/hekyou/diag-pukiwiki-extension

  • diag.inc.php [本体]
  • README.rst [メモ]

*1

インストール方法

1. PukiWikiのplugin配下にdiag.inc.phpを置く
cp diag.inc.php ${PUKIWIKI_ROOT}/plugin/
2. pukiwiki.ini.php内の複数行プラグイン引数設定を有効に

PukiWiki 1.4.6以降のみ可能なようです。

define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled
3. 初期設定変更

diag.inc.php内のdefineを変更することで可能です。

  • 画像一時生成場所

表示時、一時的に使用。
画像ファイルを保存しないようにするために
毎回表示時に画像を生成する方式を採用しました。
そのため表示の際に多少ラグがあるかも…

defined('PLUGIN_DIAG_IMAGE_DIR') or define('PLUGIN_DIAG_IMAGE_DIR', '/tmp/');
  • blockdiag等のパス
defined('PLUGIN_DIAG_BLOCKDIAG_PATH') or define('PLUGIN_DIAG_BLOCKDIAG_PATH', '/usr/local/bin/blockdiag');
defined('PLUGIN_DIAG_NWDIAG_PATH')    or define('PLUGIN_DIAG_NWDIAG_PATH', '/usr/local/bin/nwdiag');
defined('PLUGIN_DIAG_SEQDIAG_PATH')   or define('PLUGIN_DIAG_SEQDIAG_PATH', '/usr/local/bin/seqdiag');
defined('PLUGIN_DIAG_ACTDIAG_PATH')   or define('PLUGIN_DIAG_ACTDIAG_PATH', '/usr/local/bin/actdiag');
  • フォントの変更
define('PLUGIN_DIAG_FONT_PATH', '--font=/Library/Fonts/Osaka.ttf');

といった形式でフォントのパスを指定することで
任意のフォントが使用可能です。

使い方

埋め込みたいところに下記フォーマットで記述

#diag([type]){{
[diagram]
}}

[type]に入れるのは
block : blockdiag使用時
nw : nwdiag使用時
seq : seqdiag使用時
act : actdiag使用時

[diagram]には通常使用するdiagram文をそのまま使用

使用例

blockdiag
#diag(block){{
diagram {
   A -> B -> C -> D;
   A -> E -> F -> G;
}
}}
nwdiag
#diag(nw){{
diagram {
  network dmz {
      address = "210.x.x.x/24"
web01 [address = "210.x.x.1"]; web02 [address = "210.x.x.2"]; } network internal { address = "172.x.x.x/24";
web01 [address = "172.x.x.1"]; web02 [address = "172.x.x.2"]; db01; db02; } } }}
seqdiag
#diag(seq){{
diagram {
  browser  -> webserver [label = "GET /index.html"];
  browser <-- webserver;
  browser  -> webserver [label = "POST /blog/comment"];
              webserver  -> database [label = "INSERT comment"];
              webserver <-- database;
  browser <-- webserver;
}
}}
actdiag
#diag(act){{
diagram {
  write -> convert -> image
lane user { label = "User" write [label = "Writing reST"]; image [label = "Get diagram IMAGE"]; } lane actdiag { convert [label = "Convert reST to Image"]; } } }}

blockdiag等をそのままコマンドにしたかったのですが
プラグインファイルを1つにしたかったため
diagコマンドとなりました。。

要望があれば諸々検討させていただきます!

*1:mediawikiプラグインとフォーマット等を合わせました。問題があればご指摘頂けると助かります。。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証