@@ -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+
14591512class 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