Created
February 20, 2020 15:36
-
-
Save zyocum/d942f997b32de3e5d9fc9aa8beaf95ce to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
"""Produce visual, HTML diffs of two files""" | |
from argparse import ArgumentError, FileType | |
from difflib import HtmlDiff | |
def load(filename): | |
with open(filename, mode='r') as f: | |
for line in f: | |
yield line | |
def junk(junk_chars): | |
try: | |
return lambda c: c in set(junk_chars) | |
except: | |
raise ArgumentError('invalid argument: {}'.format(junk_chars)) | |
def main(filename1, filename2, **kwargs): | |
differ = HtmlDiff(**kwargs) | |
print( | |
differ.make_file( | |
filename1, | |
filename2, | |
fromdesc=filename1, | |
todesc=filename2 | |
) | |
) | |
if __name__ == '__main__': | |
import argparse | |
parser = argparse.ArgumentParser( | |
formatter_class=argparse.ArgumentDefaultsHelpFormatter, | |
description=__doc__ | |
) | |
parser.add_argument( | |
'file1', | |
type=FileType('r'), | |
help='A file to diff against file2' | |
) | |
parser.add_argument( | |
'file2', | |
type=FileType('r'), | |
help='A file to diff against file1' | |
) | |
parser.add_argument( | |
'-w', '--wrapcolumn', | |
type=int, | |
default=None, | |
help='Column number where lines are broken and wrapped' | |
) | |
parser.add_argument( | |
'-j', '--junk', | |
type=junk, | |
default='', | |
help=( | |
'Characters to be considered junk; ' | |
'i.e., not considered part of the diff' | |
) | |
) | |
args = parser.parse_args() | |
main( | |
args.file1, | |
args.file2, | |
wrapcolumn=args.wrapcolumn, | |
charjunk=args.junk | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment