5 import sys |
5 import sys |
6 import codecs |
6 import codecs |
7 import tempfile |
7 import tempfile |
8 import shutil |
8 import shutil |
9 import signal |
9 import signal |
|
10 import regex |
10 |
11 |
11 import gadict |
12 import gadict |
12 |
13 |
13 |
14 |
14 FINAME = None |
15 FINAME = None |
15 FONAME = None |
16 FONAME = None |
16 if len(sys.argv) >= 2: |
|
17 FINAME = sys.argv[1] |
|
18 if len(sys.argv) >= 3: |
|
19 FONAME = sys.argv[2] |
|
20 LANGS = None |
17 LANGS = None |
21 if len(sys.argv) >= 4: |
18 |
22 LANGS = set(sys.argv[3].split(",")) |
19 # -lang:ru,uk |
|
20 ARG_LANG_RE = regex.compile("-lang:(.+)") |
|
21 # -freq:var:TAG=FILE or -freq:freq:TAG=FILE |
|
22 ARG_FREQ_RE = regex.compile("-freq:(freq|var):([^=]+)=(.+)") |
|
23 |
|
24 look_for_files = False |
|
25 for idx in range(1, len(sys.argv)): |
|
26 arg = sys.argv[idx] |
|
27 if arg == "--": |
|
28 look_for_files = True |
|
29 continue |
|
30 if not look_for_files: |
|
31 m = ARG_LANG_RE.match(arg) |
|
32 if m: |
|
33 LANGS = set(m.group(1).split(",")) |
|
34 for lang in LANGS: |
|
35 if len(lang) != 2: |
|
36 raise Exception("Incorrect language specification: '{:s}'".format(arg)) |
|
37 continue |
|
38 m = ARG_FREQ_RE.match(arg) |
|
39 if m: |
|
40 LANGS = set(arg.split(",")) |
|
41 for lang in LANGS: |
|
42 if len(lang) != 2: |
|
43 raise Exception("Incorrect language specification: '{:s}'".format(arg)) |
|
44 continue |
|
45 if arg.startswith("-"): |
|
46 raise Exception("Unsupported option format: '{:s}'".format(arg)) |
|
47 if not FINAME: |
|
48 FINAME = arg |
|
49 continue |
|
50 if not FONAME: |
|
51 FONAME = arg |
|
52 continue |
|
53 raise Exception("Unnecessary argument: '{:s}'".format(arg)) |
|
54 |
23 |
55 |
24 FIN = io.open(FINAME, mode='r', buffering=1, encoding="utf-8") |
56 FIN = io.open(FINAME, mode='r', buffering=1, encoding="utf-8") |
25 |
57 |
26 PARSER = gadict.Parser() |
58 PARSER = gadict.Parser() |
27 try: |
59 try: |