comparison diff-colorize.py @ 21:929a488c4960

Prevent lines that are completely different from being completely highlighted as different.
author Peter Hosey <hg@boredzo.org>
date Wed, 05 Jan 2011 21:02:24 -0800
parents b4caea436f4d
children d2bb1603f081
comparison
equal deleted inserted replaced
20:b4caea436f4d 21:929a488c4960
321 321
322 # Buffers to support interleaving old and new lines that were contiguous runs. 322 # Buffers to support interleaving old and new lines that were contiguous runs.
323 buffer_old = [] # '-' lines 323 buffer_old = [] # '-' lines
324 buffer_new = [] # '+' lines 324 buffer_new = [] # '+' lines
325 325
326 from string import whitespace
327
326 def flush_buffers(buffer_old, buffer_new): 328 def flush_buffers(buffer_old, buffer_new):
327 "Flush the buffers, interleaving the lines and highlighting differences between them." 329 "Flush the buffers, interleaving the lines and highlighting differences between them."
328 def print_single_line(buffered_line): 330 def print_single_line(buffered_line):
329 prefix = '-' if buffered_line.startswith('-') else '+' 331 prefix = '-' if buffered_line.startswith('-') else '+'
330 buffered_line = buffered_line[len(prefix):] 332 buffered_line = buffered_line[len(prefix):]
347 old_line = last_line_if_old 349 old_line = last_line_if_old
348 new_line = buffered_line 350 new_line = buffered_line
349 351
350 old_line_output = [prefixes['-']] 352 old_line_output = [prefixes['-']]
351 new_line_output = [prefixes['+']] 353 new_line_output = [prefixes['+']]
352 for node in common_and_distinct_substrings(old_line[1:], new_line[1:]): 354
353 if node.differ: 355 differenced_lines = common_and_distinct_substrings(old_line[1:], new_line[1:])
356 lines_have_any_non_whitespace_part_in_common = False
357 for node in differenced_lines:
358 if not node.differ:
359 if str(node.a) not in whitespace:
360 lines_have_any_non_whitespace_part_in_common = True
361 break
362
363 for node in differenced_lines:
364 if lines_have_any_non_whitespace_part_in_common and node.differ:
354 old_line_output.append(BEGIN_REVERSE_FORMAT) 365 old_line_output.append(BEGIN_REVERSE_FORMAT)
355 old_line_output.append(str(node.a)) 366 old_line_output.append(str(node.a))
356 old_line_output.append(END_REVERSE_FORMAT) 367 old_line_output.append(END_REVERSE_FORMAT)
357 368
358 new_line_output.append(BEGIN_REVERSE_FORMAT) 369 new_line_output.append(BEGIN_REVERSE_FORMAT)