diff options
author | Adam Spiers <git@adamspiers.org> | 2015-01-06 19:07:40 +0000 |
---|---|---|
committer | Adam Spiers <git@adamspiers.org> | 2015-01-06 19:08:17 +0000 |
commit | 3701ba3b4e414c6c59deb3745610a826c30aa4c6 (patch) | |
tree | 896916d70c1e8354ab9f6049ea6bcfc02fe62533 | |
parent | e25b3308d6abdafc1983df64220aeb931f122645 (diff) | |
download | git-deps-3701ba3b4e414c6c59deb3745610a826c30aa4c6.tar.gz |
add x alignment constraints
doesn't work 100% yet
-rwxr-xr-x | git-deps | 33 | ||||
-rw-r--r-- | html/test.json | 56 |
2 files changed, 78 insertions, 11 deletions
@@ -135,10 +135,18 @@ class JSONDependencyListener(DependencyListener): def __init__(self, options): super(JSONDependencyListener, self).__init__(options) - self._nodes = {} # maps node names to indices in the nodes array + + # Map node names to indices in the nodes array + self._nodes = {} + + # Maps node names to child node names. This will be used to + # constrain siblings to the same y position. + self._deps = {} + self._json = { 'nodes': [], 'links': [], + 'constraints': [], } def abbreviate_sha(self, sha): @@ -203,8 +211,11 @@ class JSONDependencyListener(DependencyListener): self._json['links'].append def new_dependency(self, dependent, dependency, path, line_num): - source_index = self.add_node(dependent.hex) - target_index = self.add_node(dependency.hex) + parent = dependent.hex + child = dependency.hex + + source_index = self.add_node(parent) + target_index = self.add_node(child) new_link = { 'source': source_index, @@ -217,7 +228,23 @@ class JSONDependencyListener(DependencyListener): self._json['links'].append(new_link) + if parent in self._deps: + self._deps[parent].append(child) + else: + self._deps[parent] = [child] + def json(self): + for parent, children in self._deps.iteritems(): + constraint = { + 'axis': 'x', + 'type': 'alignment', + 'offsets': [ + {'node': self._nodes[child], 'offset': 0} + for child in children + ] + } + self._json['constraints'].append(constraint) + return json.dumps(self._json, sort_keys=True, indent=4) def all_done(self): diff --git a/html/test.json b/html/test.json index fda0ccd..0eda49c 100644 --- a/html/test.json +++ b/html/test.json @@ -1,4 +1,44 @@ { + "constraints": [ + { + "axis": "x", + "offsets": [ + { + "node": 1, + "offset": 0 + }, + { + "node": 2, + "offset": 0 + }, + { + "node": 3, + "offset": 0 + }, + { + "node": 4, + "offset": 0 + }, + { + "node": 5, + "offset": 0 + }, + { + "node": 6, + "offset": 0 + }, + { + "node": 7, + "offset": 0 + }, + { + "node": 8, + "offset": 0 + } + ], + "type": "alignment" + } + ], "links": [ { "source": 0, @@ -43,7 +83,7 @@ ], "nodes": [ { - "describe": "github/master-0", + "describe": "tags/test-0", "name": "2b6d591", "sha": "2b6d5915f6433b9eb1685751b82cfbebcbb37981" }, @@ -53,37 +93,37 @@ "sha": "b1967573e81a8100a4cc778936de0ba0a8a8f5cb" }, { - "describe": "testbranch-1", + "describe": "", "name": "3a1dd42", "sha": "3a1dd42fd6114a634ba7cf037ce61e2aee76db73" }, { - "describe": "testbranch-4", + "describe": "", "name": "3374b84", "sha": "3374b8419a45d91d3c0631be11c8cf893b272217" }, { - "describe": "testbranch-30", + "describe": "", "name": "ff82dda", "sha": "ff82dda196947650bd497301e61b282753193564" }, { - "describe": "testbranch-11", + "describe": "", "name": "8d44254", "sha": "8d442544a20b706b996d66ab390a16fd97b48d6d" }, { - "describe": "testbranch-0", + "describe": "", "name": "b144bfd", "sha": "b144bfd5feb327ef7ce0c26bbfb6f4da573abfe5" }, { - "describe": "testbranch-29", + "describe": "", "name": "e406002", "sha": "e40600230d1c3059485437bd4d5690d61c9edb2f" }, { - "describe": "testbranch-16", + "describe": "", "name": "4f27a1e", "sha": "4f27a1ee2b5fd63a58311a20e2aed0a24eda8da2" } |