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