summaryrefslogtreecommitdiffstats
path: root/Lib/difflib.py
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2011-04-11 00:14:56 (GMT)
committerRaymond Hettinger <python@rcn.com>2011-04-11 00:14:56 (GMT)
commit47e120e70cc3d4e70dcdc82df09d923d453c5d6d (patch)
treebafbe927713b2e7114f7b8f8ab39efbb283cc8eb /Lib/difflib.py
parentbed9a5b6b38e30b4a207237ac9753cbfa0f2ae99 (diff)
downloadcpython-47e120e70cc3d4e70dcdc82df09d923d453c5d6d.zip
cpython-47e120e70cc3d4e70dcdc82df09d923d453c5d6d.tar.gz
cpython-47e120e70cc3d4e70dcdc82df09d923d453c5d6d.tar.bz2
Cleanup and modernize code prior to working on Issue 11747.
Diffstat (limited to 'Lib/difflib.py')
-rw-r--r--Lib/difflib.py53
1 files changed, 27 insertions, 26 deletions
diff --git a/Lib/difflib.py b/Lib/difflib.py
index 003e72e..86d928f 100644
--- a/Lib/difflib.py
+++ b/Lib/difflib.py
@@ -1188,22 +1188,23 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
started = False
for group in SequenceMatcher(None,a,b).get_grouped_opcodes(n):
if not started:
- fromdate = '\t%s' % fromfiledate if fromfiledate else ''
- todate = '\t%s' % tofiledate if tofiledate else ''
- yield '--- %s%s%s' % (fromfile, fromdate, lineterm)
- yield '+++ %s%s%s' % (tofile, todate, lineterm)
started = True
- i1, i2, j1, j2 = group[0][1], group[-1][2], group[0][3], group[-1][4]
- yield "@@ -%d,%d +%d,%d @@%s" % (i1+1, i2-i1, j1+1, j2-j1, lineterm)
+ fromdate = '\t{}'.format(fromfiledate) if fromfiledate else ''
+ todate = '\t{}'.format(tofiledate) if tofiledate else ''
+ yield '--- {}{}{}'.format(fromfile, fromdate, lineterm)
+ yield '+++ {}{}{}'.format(tofile, todate, lineterm)
+ first, last = group[0], group[-1]
+ i1, i2, j1, j2 = first[1], last[2], first[3], last[4]
+ yield '@@ -{},{} +{},{} @@{}'.format(i1+1, i2-i1, j1+1, j2-j1, lineterm)
for tag, i1, i2, j1, j2 in group:
if tag == 'equal':
for line in a[i1:i2]:
yield ' ' + line
continue
- if tag == 'replace' or tag == 'delete':
+ if tag in {'replace', 'delete'}:
for line in a[i1:i2]:
yield '-' + line
- if tag == 'replace' or tag == 'insert':
+ if tag in {'replace', 'insert'}:
for line in b[j1:j2]:
yield '+' + line
@@ -1252,38 +1253,38 @@ def context_diff(a, b, fromfile='', tofile='',
four
"""
+ prefix = dict(insert='+ ', delete='- ', replace='! ', equal=' ')
started = False
- prefixmap = {'insert':'+ ', 'delete':'- ', 'replace':'! ', 'equal':' '}
for group in SequenceMatcher(None,a,b).get_grouped_opcodes(n):
if not started:
- fromdate = '\t%s' % fromfiledate if fromfiledate else ''
- todate = '\t%s' % tofiledate if tofiledate else ''
- yield '*** %s%s%s' % (fromfile, fromdate, lineterm)
- yield '--- %s%s%s' % (tofile, todate, lineterm)
started = True
+ fromdate = '\t{}'.format(fromfiledate) if fromfiledate else ''
+ todate = '\t{}'.format(tofiledate) if tofiledate else ''
+ yield '*** {}{}{}'.format(fromfile, fromdate, lineterm)
+ yield '--- {}{}{}'.format(tofile, todate, lineterm)
- yield '***************%s' % (lineterm,)
- if group[-1][2] - group[0][1] >= 2:
- yield '*** %d,%d ****%s' % (group[0][1]+1, group[-1][2], lineterm)
+ first, last = group[0], group[-1]
+ yield '***************{}'.format(lineterm)
+
+ if last[2] - first[1] > 1:
+ yield '*** {},{} ****{}'.format(first[1]+1, last[2], lineterm)
else:
- yield '*** %d ****%s' % (group[-1][2], lineterm)
- visiblechanges = [e for e in group if e[0] in ('replace', 'delete')]
- if visiblechanges:
+ yield '*** {} ****{}'.format(last[2], lineterm)
+ if any(tag in {'replace', 'delete'} for tag, _, _, _, _ in group):
for tag, i1, i2, _, _ in group:
if tag != 'insert':
for line in a[i1:i2]:
- yield prefixmap[tag] + line
+ yield prefix[tag] + line
- if group[-1][4] - group[0][3] >= 2:
- yield '--- %d,%d ----%s' % (group[0][3]+1, group[-1][4], lineterm)
+ if last[4] - first[3] > 1:
+ yield '--- {},{} ----{}'.format(first[3]+1, last[4], lineterm)
else:
- yield '--- %d ----%s' % (group[-1][4], lineterm)
- visiblechanges = [e for e in group if e[0] in ('replace', 'insert')]
- if visiblechanges:
+ yield '--- {} ----{}'.format(last[4], lineterm)
+ if any(tag in {'replace', 'insert'} for tag, _, _, _, _ in group):
for tag, _, _, j1, j2 in group:
if tag != 'delete':
for line in b[j1:j2]:
- yield prefixmap[tag] + line
+ yield prefix[tag] + line
def ndiff(a, b, linejunk=None, charjunk=IS_CHARACTER_JUNK):
r"""