From a663e9d83e828a1801ecb2d33c66c87f9aee7a60 Mon Sep 17 00:00:00 2001 From: gijs <gijs@de-heij.com> Date: Tue, 20 Dec 2016 14:16:56 +0100 Subject: [PATCH] Started on Graphviz transformation --- tools/makeGraph.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++ tools/test.txt | 7 +++++ 2 files changed, 82 insertions(+) create mode 100644 tools/makeGraph.py create mode 100644 tools/test.txt diff --git a/tools/makeGraph.py b/tools/makeGraph.py new file mode 100644 index 0000000..41b800a --- /dev/null +++ b/tools/makeGraph.py @@ -0,0 +1,75 @@ +""" + +# Loop through lines. +# ident level, if bigger > branch, if smaller < collapse +# on branch new sub level + +# on collapse add to latest element + +# tree, leaf? + +Node +* data +* children +* parent +* addChild + +""" + +import re +from sys import argv + +class Node (object): + def __init__ (self, data = '', parent=None, level=0): + self.parent = parent + self.data = data + self.children = [] + self.level = level + + def lastChild(self): + if len(self.children) > 0: + return self.children[-1]; + return None + + def include (self, data, level): + # print data, level, self.level + if ((level - self.level > 1) and len(self.children) > 0): + self.lastChild().include(data, level) + else: + self.children.append(Node(data=data, parent=self, level=self.level+1)) + + def toDot (self): + if len(self.children) > 0: + labels = [] + tails = [] + + for child in self.children: + label, tail = child.toDot() + labels.append(label) + tails.extend(tail) + + return '"{}" -- {{ {} }}"\n{}'.format(self.data, ' '.join(labels), '\n'.foramt(tails)) + else: + return '"{}"'.format(self.data) + +tree = None + +for line in open(argv[1]).readlines(): + match = re.search('^(\s*)(.*?)$', line) + head = match.group(1) + level = len(head) if head else 0 + data = match.group(2) + + if not tree: + tree = Node(data=data, level=level) + else: + tree.include(data, level) + + # print data, level + + # if len(tree) > 0: + # while (len(tree.children) tree.children[-1].level) + # else: + # tree.addChild(data) + +print "graph {{ {} }}".format(tree.toDot()) \ No newline at end of file diff --git a/tools/test.txt b/tools/test.txt new file mode 100644 index 0000000..2fdad47 --- /dev/null +++ b/tools/test.txt @@ -0,0 +1,7 @@ +A + ab + abc + ad + 3 + 4 + 5 \ No newline at end of file -- GitLab