Browse Source

Fixed parent edge centration issue.

Sander Mathijs van Veen 14 years ago
parent
commit
decaaecb61
2 changed files with 11 additions and 11 deletions
  1. 10 10
      graph.py
  2. 1 1
      tests/test_graph.py

+ 10 - 10
graph.py

@@ -42,9 +42,9 @@ def generate_graph(root, separator=' ', verbose=False):
 
         # Leaves do not have children and therefore the length of its title is
         # the width of the leaf.
-        if not isinstance(node, Node):
+        if isinstance(node, Leaf):
             node_width[node] = title_len
-            node_middle[node] = int(title_len / 2)
+            node_middle[node] = int((title_len - 1) / 2)
             return title_len
 
         node_len = len(node)
@@ -64,7 +64,7 @@ def generate_graph(root, separator=' ', verbose=False):
         middle += max(middle_pos - int(node_len % 2 == 0), 0) * separator_len
 
         # Add a separator between each node (thus n - 1 separators).
-        width += separator_len * (len(node) - 1)
+        width += separator_len * (node_len - 1)
 
         # If the title of the node is wider than the sum of its children, the
         # title's width should be used.
@@ -80,7 +80,7 @@ def generate_graph(root, separator=' ', verbose=False):
         return width
 
     def format_lines(node):
-        if not isinstance(node, Node):
+        if isinstance(node, Leaf):
             # Leaf titles do not need to be centered, since the parent will
             # center those lines. And if there are no parents, the entire graph
             # consists of a single leaf, so in that case there still is no
@@ -171,7 +171,7 @@ def generate_graph(root, separator=' ', verbose=False):
                 if i < middle_node:
                     marker = (left_sign if i == 0 else tsplit_dn_sign)
                     edge_line += center_text(marker, box_widths[i],
-                                             middle=0,
+                                             middle=node_middle[child],
                                              right=dash_sign)
                 else:
                     if i == node_len - 1:
@@ -180,7 +180,7 @@ def generate_graph(root, separator=' ', verbose=False):
                         marker = tsplit_dn_sign
 
                     edge_line += center_text(marker, box_widths[i],
-                                             middle=0,
+                                             middle=node_middle[child],
                                              left=dash_sign)
 
         try:
@@ -200,10 +200,10 @@ def generate_graph(root, separator=' ', verbose=False):
 
     calculate_node_sizes(root)
 
-    #if verbose:
-    #    print '------- node_{width,middle} ---------'
-    #    for node, width in node_width.iteritems():
-    #        print node.title(), 'width:', width, 'middle:', node_middle[node]
+    if verbose:  # pragma: nocover
+        print '------- node_{width,middle} ---------'
+        for node, width in node_width.iteritems():
+            print node.title(), 'width:', width, 'middle:', node_middle[node]
 
     lines = format_lines(root)
 

+ 1 - 1
tests/test_graph.py

@@ -157,7 +157,7 @@ class TestGraph(unittest.TestCase):
 
         root = Node('+', Node('+', Node('+', ac, ad), bc), bd)
 
-        g = generate_graph(root, verbose=True)
+        g = generate_graph(root)
         self.assertEqualGraphs(g, """
                    +
                ╭───┴─╮