Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/lxml/html/_diffcommand.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:26e78fe6e8c4 |
---|---|
1 from __future__ import absolute_import | |
2 | |
3 import optparse | |
4 import sys | |
5 import re | |
6 import os | |
7 from .diff import htmldiff | |
8 | |
9 description = """\ | |
10 """ | |
11 | |
12 parser = optparse.OptionParser( | |
13 usage="%prog [OPTIONS] FILE1 FILE2\n" | |
14 "%prog --annotate [OPTIONS] INFO1 FILE1 INFO2 FILE2 ...", | |
15 description=description, | |
16 ) | |
17 | |
18 parser.add_option( | |
19 '-o', '--output', | |
20 metavar="FILE", | |
21 dest="output", | |
22 default="-", | |
23 help="File to write the difference to", | |
24 ) | |
25 | |
26 parser.add_option( | |
27 '-a', '--annotation', | |
28 action="store_true", | |
29 dest="annotation", | |
30 help="Do an annotation") | |
31 | |
32 def main(args=None): | |
33 if args is None: | |
34 args = sys.argv[1:] | |
35 options, args = parser.parse_args(args) | |
36 if options.annotation: | |
37 return annotate(options, args) | |
38 if len(args) != 2: | |
39 print('Error: you must give two files') | |
40 parser.print_help() | |
41 sys.exit(1) | |
42 file1, file2 = args | |
43 input1 = read_file(file1) | |
44 input2 = read_file(file2) | |
45 body1 = split_body(input1)[1] | |
46 pre, body2, post = split_body(input2) | |
47 result = htmldiff(body1, body2) | |
48 result = pre + result + post | |
49 if options.output == '-': | |
50 if not result.endswith('\n'): | |
51 result += '\n' | |
52 sys.stdout.write(result) | |
53 else: | |
54 with open(options.output, 'wb') as f: | |
55 f.write(result) | |
56 | |
57 def read_file(filename): | |
58 if filename == '-': | |
59 c = sys.stdin.read() | |
60 elif not os.path.exists(filename): | |
61 raise OSError( | |
62 "Input file %s does not exist" % filename) | |
63 else: | |
64 with open(filename, 'rb') as f: | |
65 c = f.read() | |
66 return c | |
67 | |
68 body_start_re = re.compile( | |
69 r"<body.*?>", re.I|re.S) | |
70 body_end_re = re.compile( | |
71 r"</body.*?>", re.I|re.S) | |
72 | |
73 def split_body(html): | |
74 pre = post = '' | |
75 match = body_start_re.search(html) | |
76 if match: | |
77 pre = html[:match.end()] | |
78 html = html[match.end():] | |
79 match = body_end_re.search(html) | |
80 if match: | |
81 post = html[match.start():] | |
82 html = html[:match.start()] | |
83 return pre, html, post | |
84 | |
85 def annotate(options, args): | |
86 print("Not yet implemented") | |
87 sys.exit(1) | |
88 |