(
left: list[str], right: list[str]
)
| 48 | |
| 49 | |
| 50 | def diff_ranges( |
| 51 | left: list[str], right: list[str] |
| 52 | ) -> tuple[list[tuple[int, int]], list[tuple[int, int]]]: |
| 53 | seq = difflib.SequenceMatcher(None, left, right) |
| 54 | # note last triple is a dummy, so don't need to worry |
| 55 | blocks = seq.get_matching_blocks() |
| 56 | |
| 57 | i = 0 |
| 58 | j = 0 |
| 59 | left_ranges = [] |
| 60 | right_ranges = [] |
| 61 | for block in blocks: |
| 62 | # mismatched range |
| 63 | left_ranges.append((i, block.a)) |
| 64 | right_ranges.append((j, block.b)) |
| 65 | |
| 66 | i = block.a + block.size |
| 67 | j = block.b + block.size |
| 68 | |
| 69 | # matched range |
| 70 | left_ranges.append((block.a, i)) |
| 71 | right_ranges.append((block.b, j)) |
| 72 | return left_ranges, right_ranges |
| 73 | |
| 74 | |
| 75 | def render_diff_range( |
searching dependent graphs…