UMLシーケンス図画像を生成するために処理するテキストがあります。python
テキストを既存の「texttouml」ツールの形式で処理することはできますが、perl
その余分な手順を排除して、python/perlスクリプトから直接画像出力を提供しようとしています。
使用できるPythonまたはPerlのパッケージ/モジュールはありますか?
UMLシーケンス図画像を生成するために処理するテキストがあります。python
テキストを既存の「texttouml」ツールの形式で処理することはできますが、perl
その余分な手順を排除して、python/perlスクリプトから直接画像出力を提供しようとしています。
使用できるPythonまたはPerlのパッケージ/モジュールはありますか?
Pythonには多くの選択肢があります。
画像を最初から生成する場合は、 Pythonの「事実上の」画像ライブラリであるPIL(Python Imaging Library)を検討することをお勧めします。
ただし、特にシーケンス図の場合、blockdiagダイアグラムイメージジェネレータライブラリ(PILも使用)には、seqdiagと呼ばれるシーケンスダイアグラムジェネレータが含まれています。たとえば、ダイアグラムの定義を含め、シンプルでありながら完全なシーケンス図を定義および作成する方法は次のとおりです。
from seqdiag import parser, builder, drawer
diagram_definition = u"""
seqdiag {
browser -> webserver [label = "GET /index.html"];
browser <- webserver;
}
"""
tree = parser.parse_string(diagram_definition)
diagram = builder.ScreenNodeBuilder.build(tree)
draw = drawer.DiagramDraw('PNG', diagram, filename="diagram.png")
draw.draw()
draw.save()
その他の例(シーケンス)図の定義とスタイル設定オプションについては、 http://blockdiag.com/en/seqdiag/examples.htmlを参照してください。
Perlでこれを行うperlモジュールがいくつかあります。UML::Stateを参照してください。
あらすじから:
use UML::State;
my $diagram = UML::State->new(
$node_array,
$start_list,
$accept_list,
$edges
);
# You may change these defaults (doing so may even work):
$UML::State::ROW_SPACING = 75; # all numbers are in pixels
$UML::State::LEFT_MARGIN = 20;
$UML::State::WIDTH = 800;
$UML::State::HEIGHT = 800;
print $diagram->draw();
CPANはあなたの友達です。:)