aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Spiers <git@adamspiers.org>2015-01-06 19:07:40 +0000
committerAdam Spiers <git@adamspiers.org>2015-01-06 19:08:17 +0000
commit3701ba3b4e414c6c59deb3745610a826c30aa4c6 (patch)
tree896916d70c1e8354ab9f6049ea6bcfc02fe62533
parente25b3308d6abdafc1983df64220aeb931f122645 (diff)
downloadgit-deps-3701ba3b4e414c6c59deb3745610a826c30aa4c6.tar.gz
add x alignment constraints
doesn't work 100% yet
-rwxr-xr-xgit-deps33
-rw-r--r--html/test.json56
2 files changed, 78 insertions, 11 deletions
diff --git a/git-deps b/git-deps
index 4c5b075..55bdfb5 100755
--- a/git-deps
+++ b/git-deps
@@ -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"
}