12
12
Exception.__init__(self, "Can't find dot!")
14
14
class Node(object):
15
def __init__(self, name, color=None, label=None, rev_id=None):
15
def __init__(self, name, color=None, label=None, rev_id=None,
19
20
self.committer = None
20
21
self.rev_id = rev_id
21
22
self.node_style = []
23
self.cluster = cluster
23
25
def get_committer(self):
24
26
if self.committer is not None:
71
73
yield "digraph G\n"
76
def rel_appropriate(start, end, cluster):
78
return start.cluster is None or end.cluster is None
80
return start.cluster==cluster and end.cluster==cluster
73
82
for (start, end) in relations:
74
if start.name not in defined:
75
defined.add(start.name)
76
my_def = start.define()
77
if my_def is not None:
78
yield " %s;\n" % my_def
79
if end.name not in defined:
82
if my_def is not None:
83
yield " %s;\n" % my_def
85
yield " %s->%s;\n" % (start.name, end.name)
83
if start.cluster is not None:
84
clusters.add(start.cluster)
85
if end.cluster is not None:
86
clusters.add(end.cluster)
87
clusters = list(clusters)
89
for index, cluster in enumerate(clusters):
90
if cluster is not None:
91
yield "subgraph cluster_%s\n" % index
93
yield ' label="%s"\n' % cluster
94
for (start, end) in relations:
95
if start.name not in defined and start.cluster == cluster:
96
defined.add(start.name)
97
my_def = start.define()
98
if my_def is not None:
99
yield " %s;\n" % my_def
100
if end.name not in defined and end.cluster == cluster:
101
defined.add(end.name)
102
my_def = end.define()
103
if my_def is not None:
104
yield " %s;\n" % my_def
105
if rel_appropriate(start, end, cluster):
106
yield " %s->%s;\n" % (start.name, end.name)
107
if cluster is not None:
88
def invoke_dot(input, out_file=None, file_type='svg'):
111
def invoke_dot(input, out_file=None, file_type='svg', antialias=None):
89
112
cmdline = ['dot', '-T%s' % file_type]
90
113
if out_file is not None:
91
114
cmdline.extend(('-o', out_file))