394: def to_dot_graph (params = {})
395: params['name'] ||= self.class.name.gsub(/:/,'_')
396: fontsize = params['fontsize'] ? params['fontsize'] : '8'
397: graph = (directed? ? DOT::DOTDigraph : DOT::DOTSubgraph).new(params)
398: edge_klass = directed? ? DOT::DOTDirectedEdge : DOT::DOTEdge
399: vertices.each do |v|
400: name = v.to_s
401: params = {'name' => '"'+name+'"',
402: 'fontsize' => fontsize,
403: 'label' => name}
404: v_label = v.to_s
405: params.merge!(v_label) if v_label and v_label.kind_of? Hash
406: graph << DOT::DOTNode.new(params)
407: end
408: edges.each do |e|
409: params = {'from' => '"'+ e.source.to_s + '"',
410: 'to' => '"'+ e.target.to_s + '"',
411: 'fontsize' => fontsize }
412: e_label = e.to_s
413: params.merge!(e_label) if e_label and e_label.kind_of? Hash
414: graph << edge_klass.new(params)
415: end
416: graph
417: end