cl-dotはGraphvizというツール群を使ってグラフを書くためのCommonLispライブラリ。日本語は出力できないらしい。
デバイスの階層っぽい図を書いてみた。クラス階層なんかも同じ要領で書けそう。
(asdf:oos 'asdf:load-op :cl-dot)
;;;デバイスの階層を表現
(defparameter *resources*
`("Device"
("CharacterDevice"
("Keyboard")
("Mouse"))
("BlockDevice"
("HardDisk")
("FloppyDisk"))))
(defmethod cl-dot:graph-object-node ((graph (eql 'resources)) (object list))
(make-instance 'cl-dot:node
:attributes
(list :label (first object)
:shape :box
:fontname "Arial"
;; :style :filled
;; :fillcolor "#ffffff"
:color :black)))
(defmethod cl-dot:graph-object-points-to ((graph (eql 'resources)) (object list))
(cdr object))
(defun run (path &key (format :png))
(let ((graph
(cl-dot:generate-graph-from-roots 'resources (list *resources*))))
(cl-dot:dot-graph graph path :format format)))
;;(run "test.png")
0 件のコメント:
コメントを投稿