self.edges[self.context[-1][2]] = []
self.edges[self.context[-1][2]].append((self.context[-1][0], i.group(1)))
- def emit_dot(self):
+ def emit_dot(self, output):
top_level = []
for state in self.machines.keys():
if state not in self.states.keys():
top_level.append(state)
print('Top Level States: ', top_level, file=sys.stderr)
- print('digraph G {')
- print('\tsize="7,7"')
- print('\tcompound=true;')
+ print('digraph G {', file=output)
+ print('\tsize="7,7"', file=output)
+ print('\tcompound=true;', file=output)
for i in self.emit_state(top_level[0]):
- print('\t' + i)
+ print('\t' + i, file=output)
for i in self.edges.keys():
for j in self.emit_event(i):
- print(j)
- print('}')
+ print(j, file=output)
+ print('}', file=output)
def emit_state(self, state):
if state in self.state_contents.keys():
INPUT_GENERATOR = do_filter(line for line in sys.stdin)
RENDERER = StateMachineRenderer()
RENDERER.read_input(INPUT_GENERATOR)
- RENDERER.emit_dot()
+ RENDERER.emit_dot(output=sys.stdout)