from __future__ import absolute_import import optparse import sys import re import os from .diff import htmldiff description = """\ """ parser = optparse.OptionParser( usage="%prog [OPTIONS] FILE1 FILE2\n" "%prog --annotate [OPTIONS] INFO1 FILE1 INFO2 FILE2 ...", description=description, ) parser.add_option( '-o', '--output', metavar="FILE", dest="output", default="-", help="File to write the difference to", ) parser.add_option( '-a', '--annotation', action="store_true", dest="annotation", help="Do an annotation") def main(args=None): if args is None: args = sys.argv[1:] options, args = parser.parse_args(args) if options.annotation: return annotate(options, args) if len(args) != 2: print('Error: you must give two files') parser.print_help() sys.exit(1) file1, file2 = args input1 = read_file(file1) input2 = read_file(file2) body1 = split_body(input1)[1] pre, body2, post = split_body(input2) result = htmldiff(body1, body2) result = pre + result + post if options.output == '-': if not result.endswith('\n'): result += '\n' sys.stdout.write(result) else: with open(options.output, 'wb') as f: f.write(result) def read_file(filename): if filename == '-': c = sys.stdin.read() elif not os.path.exists(filename): raise OSError( "Input file %s does not exist" % filename) else: with open(filename, 'rb') as f: c = f.read() return c body_start_re = re.compile( r"<body.*?>", re.I|re.S) body_end_re = re.compile( r"</body.*?>", re.I|re.S) def split_body(html): pre = post = '' match = body_start_re.search(html) if match: pre = html[:match.end()] html = html[match.end():] match = body_end_re.search(html) if match: post = html[match.start():] html = html[:match.start()] return pre, html, post def annotate(options, args): print("Not yet implemented") sys.exit(1)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
ElementSoup.py | File | 320 B | 0644 |
|
__init__.py | File | 63.42 KB | 0644 |
|
_diffcommand.py | File | 2.07 KB | 0644 |
|
_html5builder.py | File | 3.17 KB | 0644 |
|
_setmixin.py | File | 1.16 KB | 0644 |
|
builder.py | File | 4.39 KB | 0644 |
|
clean.cpython-311-x86_64-linux-gnu.so | File | 573.05 KB | 0755 |
|
clean.py | File | 27.65 KB | 0644 |
|
defs.py | File | 4.14 KB | 0644 |
|
diff.cpython-311-x86_64-linux-gnu.so | File | 792.63 KB | 0755 |
|
diff.py | File | 29.84 KB | 0644 |
|
formfill.py | File | 9.46 KB | 0644 |
|
html5parser.py | File | 8.43 KB | 0644 |
|
soupparser.py | File | 9.96 KB | 0644 |
|
usedoctest.py | File | 249 B | 0644 |
|