My blog

Add intelligent tagline here

[Python][sphinx]Blockdiag Advent Calander 1日目 href機能

blockdiagアドベントカレンダー、初日です。 今回はblockdiag 1.1.1から入ったhref機能についてご紹介します。

href機能とは、ノードの属性にhrefを指定することで、SVG形式で出力する時そのノードをクリックをしたらhref属性で指定したURLに飛ぶ、という機能です。

例えば、

diag {
  A [label="blockdiag", href="http://blockdiag.com"]
  B [label="python", href="http://python.org"]

  A -> B
}

としておき、SVG形式で生成します。SVGファイルをブラウザで開いてそれぞれのノードをクリックすると、指定したURLに飛びます。

ただし、残念ながらxlink:hrefに対応していないSVGエディタでは飛びませんし、PNG形式では無意味です。

sphinxとの連携

現在sphinxcontribにもこの機能を使うように変更を行っている最中です。反映されると、以下のように書けるようになります。

.. blockdiag::

   diagram {

    A [label="blockdiag", href="http://blockdiag.com"]
    B [label="python", href=":ref:python"]

    A -> B
   }

ノードBのhrefに注目してください。:ref:pythonと指定してあります。sphinxでは

.. _python:

を章や節の前に(一行開けて)書くとそこに対して :ref:python でリンクを貼れます。これと同じ事がsphinxのblockdiag内でもできます。

また、sphinxと連携した場合、PNG形式の場合でもクリッカブルマップを自動的に設定してクリックできるようになります。

使い道

自動生成を行うと、大きな図が出来てしまうことがあります。そういう場合は分割させたいのですが、関連が分からなくなってしまいます。この様な時にhref機能があると便利です。

今後

今後グループにもこの機能を追加するかもしれません。blockdiagにはグループを別のファイルに分割する機能(-sオプション)がありますので、リンクを自動的にしてくれるならば、大きな図でも見やすくできるかもしれないと考えています。