Skip to content

Commit 5d4ca2f

Browse files
committed
Add "axes" to the diagram output
Show integers corresponding to the row and column indexes of diagrams. For example, 0 5 9 | | | 0 - ********** *........| *...-----+ *..|#????? *..|?????? 5 - *..|?????? 6 - *--+??????
1 parent f10aaeb commit 5d4ca2f

File tree

1 file changed

+57
-9
lines changed

1 file changed

+57
-9
lines changed

gitimerge.py

Lines changed: 57 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,6 +1456,59 @@ def find_frontier_blocks(block):
14561456
)
14571457

14581458

1459+
def write_diagram_with_axes(f, diagram):
1460+
"""Write a diagram of one-space-wide characters to file-like object f.
1461+
1462+
Include integers along the top and left sides showing the indexes
1463+
corresponding to the rows and columns.
1464+
1465+
"""
1466+
1467+
len1 = len(diagram)
1468+
len2 = len(diagram[0])
1469+
1470+
# Write the line of i1 numbers:
1471+
f.write(' ')
1472+
for i1 in range(0, len1, 5):
1473+
f.write('%5d' % (i1,))
1474+
1475+
if (len1 - 1) % 5 == 0:
1476+
# The last multiple-of-five integer that we just wrote was
1477+
# the index of the last column. We're done.
1478+
f.write('\n')
1479+
else:
1480+
if (len1 - 1) % 5 == 1:
1481+
# Add an extra space so that the numbers don't run together:
1482+
f.write(' ')
1483+
f.write('%s%d\n' % (' ' * ((len1 - 1) % 5 - 1), len1 - 1,))
1484+
1485+
# Write a line of '|' marks under the numbers emitted above:
1486+
f.write(' ')
1487+
for i1 in range(0, len1, 5):
1488+
f.write('%5s' % ('|',))
1489+
1490+
if (len1 - 1) % 5 == 0:
1491+
# The last multiple-of-five integer was at the last
1492+
# column. We're done.
1493+
f.write('\n')
1494+
elif (len1 - 1) % 5 == 1:
1495+
# Tilt the tick mark to account for the extra space:
1496+
f.write(' /\n')
1497+
else:
1498+
f.write('%s|\n' % (' ' * ((len1 - 1) % 5 - 1),))
1499+
1500+
# Write the actual body of the diagram:
1501+
for i2 in range(len2):
1502+
if i2 % 5 == 0 or i2 == len2 - 1:
1503+
f.write('%4d - ' % (i2,))
1504+
else:
1505+
f.write(' ')
1506+
1507+
for i1 in range(len1):
1508+
f.write(diagram[i1][i2])
1509+
f.write('\n')
1510+
1511+
14591512
class MergeFrontier(object):
14601513
"""Represents the merge frontier within a Block.
14611514
@@ -1698,11 +1751,8 @@ def format_diagram(self, formatter=None, diagram=None):
16981751

16991752
def write(self, f):
17001753
"""Write this frontier to file-like object f."""
1701-
diagram = self.format_diagram()
1702-
for i2 in range(self.block.len2):
1703-
for i1 in range(self.block.len1):
1704-
f.write(diagram[i1][i2])
1705-
f.write('\n')
1754+
1755+
write_diagram_with_axes(f, self.format_diagram())
17061756

17071757
def write_html(self, f, name, cssfile='imerge.css', abbrev_sha1=7):
17081758
class_map = {
@@ -2279,10 +2329,8 @@ def format_diagram(self, legend=None, diagram=None):
22792329
[legend[diagram[i1][i2]] for i2 in range(self.len2)]
22802330
for i1 in range(self.len1)]
22812331

2282-
def write(self, f, legend=None, sep='', linesep='\n'):
2283-
diagram = self.format_diagram(legend)
2284-
for i2 in range(self.len2):
2285-
f.write(sep.join(diagram[i1][i2] for i1 in range(self.len1)) + linesep)
2332+
def write(self, f):
2333+
write_diagram_with_axes(f, self.format_diagram())
22862334

22872335
def writeppm(self, f):
22882336
legend = ['127 127 0', '0 255 0', '0 127 0', '255 0 0', '127 0 0']

0 commit comments

Comments
 (0)