Add option to show expected output

This prints a diff between the given json file and the expected
(pretty) output, with this functionality hidden behind a cli flag
diff --git a/pre_commit_hooks/pretty_format_json.py b/pre_commit_hooks/pretty_format_json.py
index f42630a..475bf1c 100644
--- a/pre_commit_hooks/pretty_format_json.py
+++ b/pre_commit_hooks/pretty_format_json.py
@@ -4,6 +4,7 @@
 import io
 import json
 import sys
+import difflib
 from collections import OrderedDict
 from typing import List
 from typing import Mapping
@@ -55,6 +56,14 @@
     return s.split(',')
 
 
+def get_diff(source, target):
+    source_lines = ''.join(source).split('\n')
+    target_lines = ''.join(target).split('\n')
+    d = difflib.Differ()
+    diff = d.compare(source_lines, target_lines)
+    return '\n'.join(diff)
+
+
 def main(argv=None):  # type: (Optional[Sequence[str]]) -> int
     parser = argparse.ArgumentParser()
     parser.add_argument(
@@ -96,6 +105,13 @@
         default=[],
         help='Ordered list of keys to keep at the top of JSON hashes',
     )
+    parser.add_argument(
+        '--show-expected',
+        action='store_true',
+        dest='show_expected',
+        default=False,
+        help='Show a diff between the input file and expected (pretty) output',
+    )
 
     parser.add_argument('filenames', nargs='*', help='Filenames to fix')
     args = parser.parse_args(argv)
@@ -115,16 +131,8 @@
             if contents != pretty_contents:
                 print('File {} is not pretty-formatted'.format(json_file))
 
-                contents_by_line = ''.join(contents).split('\n')
-                pretty_contents_by_line = ''.join(pretty_contents).split('\n')
-
-                diff = len(contents_by_line) - len(pretty_contents_by_line)
-                if diff > 0:
-                    pretty_contents_by_line.extend([''] * diff)
-
-                for line_num, line in enumerate(contents_by_line):
-                    if line != pretty_contents_by_line[line_num]:
-                        print('{}:{}'.format(json_file, line_num))
+                if args.show_expected:
+                    print(get_diff(contents, pretty_contents))
 
                 if args.autofix:
                     _autofix(json_file, pretty_contents)