Skip to content

Commit

Permalink
Added rank info (i.e. nodes before)
Browse files Browse the repository at this point in the history
  • Loading branch information
thvitt committed Jul 12, 2020
1 parent ba2a2c5 commit 4750444
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
10 changes: 6 additions & 4 deletions src/macrogen/diff.py
Expand Up @@ -70,18 +70,20 @@ def __init__(self, a: Union[Path, str], b: Union[Path, str]):
def refinfo(self, ref: Reference, this_side: DiffSide, other_side: DiffSide):
try:
this, other = this_side.info.details.loc[ref], other_side.info.details.loc[ref]
return [attrdiff(attr, this, other) for attr in ('max_before_date', 'min_after_date')]
return [attrdiff(attr, this, other) for attr in ('max_before_date', 'min_after_date', 'rank')]
except KeyError as e:
return ['', ''] # ['KeyError', e]
return ['', '', ''] # ['KeyError', e]

def diff_order_table(self) -> HtmlTable:
table = (HtmlTable()
.column('nicht vor')
.column('nicht nach')
.column('Rang')
.column(self.a.title, _fmt_node, attrs={'class': 'pull-right'})
.column(self.b.title, _fmt_node)
.column('nicht vor')
.column('nicht nach')
.column('Rang')
)
diff = SequenceMatcher(a=self.a.order, b=self.b.order)
for op, i1, i2, j1, j2 in diff.get_opcodes():
Expand All @@ -90,10 +92,10 @@ def diff_order_table(self) -> HtmlTable:
table.row(self.refinfo(ref_a, self.a, self.b) + [ref_a or '', ref_b or ''] + self.refinfo(ref_b, self.a, self.b), class_='replace')
elif op == "delete":
for ref_a in self.a.order[i1:i2]:
table.row(self.refinfo(ref_a, self.a, self.b) + [ref_a, '', '', ''], class_='delete')
table.row(self.refinfo(ref_a, self.a, self.b) + [ref_a, '', '', '', ''], class_='delete')
elif op == "insert":
for ref_b in self.b.order[j1:j2]:
table.row(['', '', '', ref_b] + self.refinfo(ref_b, self.a, self.b), class_='insert')
table.row(['', '', '', '', ref_b] + self.refinfo(ref_b, self.a, self.b), class_='insert')
elif op == "equal":
table.row(SingleItem(
f'{i2 - i1} gleiche Referenzen ({_fmt_node(self.a.order[i1])}{_fmt_node(self.a.order[i2 - 1])})'),
Expand Down
16 changes: 15 additions & 1 deletion src/macrogen/graph.py
Expand Up @@ -402,7 +402,21 @@ def _infer_details(self):
if is_split:
table['start_pos'] = pd.Series(start_positions)
table['end_pos'] = pd.Series(end_positions)
table['rank'] = [self.closure.in_degree(ref) for ref in refs_from_graphs]

def unsplit_rank(node) -> int:
preds = self.closure.predecessors(node)
pred_cleaned = {pred.reference if isinstance(pred, SplitReference) else pred
for pred in preds}
if isinstance(node, SplitReference):
pred_cleaned -= {node.reference}
else:
pred_cleaned -= {node}
return len(pred_cleaned)

table['rank'] = [unsplit_rank(ref) for ref in refs_from_graphs]

else:
table['rank'] = [self.closure.in_degree(ref) for ref in refs_from_graphs]
for ref in refs_from_data:
max_before = max(
(d for d, _ in self.closure.in_edges(SplitReference(ref, Side.START) if is_split else ref)
Expand Down

0 comments on commit 4750444

Please sign in to comment.