|
38 | 38 | if os.path.isfile(rulesets_fn): |
39 | 39 | os.system("chmod u+w " + rulesets_fn) |
40 | 40 |
|
| 41 | +def rulesize(): |
| 42 | + return len(open(rulesets_fn).read()) |
| 43 | + |
| 44 | +def clean_up(rulefile): |
| 45 | + """Remove extra whitespace and comments from ruleset library""" |
| 46 | + comment_and_newline_pattern = re.compile(r"<!--.*?-->|\n|\r", flags=re.DOTALL) |
| 47 | + rulefile = comment_and_newline_pattern.sub('', rulefile) |
| 48 | + to_and_from_pattern = re.compile(r'\s*(to=|from=)') |
| 49 | + rulefile = to_and_from_pattern.sub(r' \1', rulefile) |
| 50 | + rulefile = re.sub(r">\s*<", r"><", rulefile) |
| 51 | + rulefile = re.sub(r" />", r"/>", rulefile) |
| 52 | + rulefile = re.sub(r"</ruleset>", r"</ruleset>\n", rulefile) |
| 53 | + return rulefile |
| 54 | + |
41 | 55 | library = open(rulesets_fn,"w") |
42 | 56 |
|
43 | 57 | # XXX TODO replace all sed commands with native Python |
|
51 | 65 | library.write('<rulesetlibrary>') |
52 | 66 |
|
53 | 67 | # Include the filename.xml as the "f" attribute |
| 68 | +print("Removing whitespaces and comments...") |
| 69 | + |
| 70 | +crush = rulesize() |
| 71 | + |
54 | 72 | for rfile in sorted(xml_ruleset_files): |
55 | 73 | ruleset = open(rfile).read() |
56 | 74 | fn=os.path.basename(rfile) |
57 | 75 | ruleset = ruleset.replace("<ruleset", '<ruleset f="%s"' % fn, 1) |
58 | | - library.write(ruleset) |
| 76 | + library.write(clean_up(ruleset)) |
59 | 77 | library.write("</rulesetlibrary>\n") |
60 | 78 | library.close() |
61 | 79 |
|
62 | | -print("Removing whitespaces and comments...") |
63 | | - |
64 | | -def rulesize(): |
65 | | - return len(open(rulesets_fn).read()) |
| 80 | +#sedcmd = ["sed", "-i", "-e", ":a", "-re"] |
| 81 | +#call(sedcmd + [r"s/<!--.*?-->//g;/<!--/N;//ba", rulesets_fn]) |
| 82 | +#call(["sed", "-i", r":a;N;$!ba;s/\n//g;s/>[ ]*</></g;s/[ ]*to=/ to=/g;s/[ ]*from=/ from=/g;s/ \/>/\/>/g", rulesets_fn]) |
| 83 | +#call(["sed", "-i", r"s/<\/ruleset>/<\/ruleset>\n/g", rulesets_fn]) |
66 | 84 |
|
67 | | -def clean_up(rulefile): |
68 | | - """Remove extra whitespace and comments from ruleset library""" |
69 | | - comment_and_newline_pattern = re.compile(r"<!--.*?-->|\n|\r", flags=re.DOTALL) |
70 | | - rulefile = comment_and_newline_pattern.sub('', rulefile) |
71 | | - |
72 | | -crush = rulesize() |
73 | | -sedcmd = ["sed", "-i", "-e", ":a", "-re"] |
74 | | -call(sedcmd + [r"s/<!--.*?-->//g;/<!--/N;//ba", rulesets_fn]) |
75 | | -call(["sed", "-i", r":a;N;$!ba;s/\n//g;s/>[ ]*</></g;s/[ ]*to=/ to=/g;s/[ ]*from=/ from=/g;s/ \/>/\/>/g", rulesets_fn]) |
76 | | -call(["sed", "-i", r"s/<\/ruleset>/<\/ruleset>\n/g", rulesets_fn]) |
77 | 85 | print("Crushed", crush, "bytes of rulesets into", rulesize()) |
78 | 86 |
|
79 | 87 | try: |
|
0 commit comments