Gauche-graphvizは、Graphvizのdot言語を読み書きするモジュールです。
ダウンロード: Gauche-graphviz-1.0.2.tgz (2019-8-6)
#!/usr/local/gauche/bin/gosh
;; -*- coding: utf-8-unix -*-
(use graphviz)
;;; Load exists graphviz dot file and convert into sdot structure.
;;; And extract all edge object from sdot structure.
(let ((sdot (parse-graphviz-dot-file "./generic_programing.dot")))
(find-sdot-object (^x (eq? (get-sdot-type x) 'edge-stmt)) sdot))
;;; Extract all nodes and edges object from sdot structure.
;;; Append attribute 'color' to each edge object and
;;; attribute 'fillcolor' and 'style' to each node object.
(let ((sdot (parse-graphviz-dot-file "./generic_programing.dot"))
(edges '())
(nodes '()))
(set! edges (find-sdot-object (^x (eq? (get-sdot-type x) 'edge-stmt)) sdot))
(set! nodes (find-sdot-object (^x (eq? (get-sdot-type x) 'node-stmt)) sdot))
(dolist (edge edges)
(add-sdot-attr! edge '("color" "cyan")))
(dolist (node nodes)
(add-sdot-attr! node '("fillcolor" "pink") '("style" "filled")))
(call-with-output-file "generic_programing2.dot"
(^(out) (sdot->graphviz-dot sdot out)))
(graphviz-dot->x "generic_programing2.dot" "png" "generic_programing2.png"))