PATH:
usr
/
lib64
/
python2.7
/
site-packages
/
lxml
/
html
import optparse import sys import re import os from lxml.html.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: f = open(options.output, 'wb') f.write(result) f.close() 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: f = open(filename, 'rb') c = f.read() f.close() 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): 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)
[-] _setmixin.pyo
[edit]
[-] _diffcommand.pyo
[edit]
[-] defs.pyc
[edit]
[-] clean.pyo
[edit]
[-] builder.py
[edit]
[-] _setmixin.py
[edit]
[-] __init__.pyo
[edit]
[-] builder.pyo
[edit]
[-] soupparser.py
[edit]
[-] _html5builder.py
[edit]
[-] diff.pyc
[edit]
[+]
..
[-] html5parser.py
[edit]
[-] diff.pyo
[edit]
[-] defs.py
[edit]
[-] __init__.pyc
[edit]
[-] soupparser.pyc
[edit]
[-] html5parser.pyo
[edit]
[-] ElementSoup.pyo
[edit]
[-] _html5builder.pyo
[edit]
[-] usedoctest.py
[edit]
[-] formfill.py
[edit]
[-] soupparser.pyo
[edit]
[-] formfill.pyc
[edit]
[-] html5parser.pyc
[edit]
[-] usedoctest.pyc
[edit]
[-] diff.py
[edit]
[-] _diffcommand.pyc
[edit]
[-] usedoctest.pyo
[edit]
[-] ElementSoup.pyc
[edit]
[-] _html5builder.pyc
[edit]
[-] defs.pyo
[edit]
[-] ElementSoup.py
[edit]
[-] __init__.py
[edit]
[-] _setmixin.pyc
[edit]
[-] _diffcommand.py
[edit]
[-] clean.py
[edit]
[-] builder.pyc
[edit]
[-] clean.pyc
[edit]
[-] formfill.pyo
[edit]