-
Notifications
You must be signed in to change notification settings - Fork 5
/
compress.py
93 lines (67 loc) · 2.82 KB
/
compress.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# CONFIGURATION ---------------------------------
# Paths to a files with all your html, css, and js
# Note: They must use ONLY single quotes (') to denote strings!
source_dir = "src"
files = {
"index.html": "index_html",
"style.css": "style_css",
"rsa-utils/jsbn_1.js": "jsbn_1_js",
"rsa-utils/jsbn_2.js": "jsbn_2_js",
"rsa-utils/rng.js": "rng_js",
"rsa-utils/prng4.js": "prng4_js",
"rsa-utils/rsa.js": "rsa_js",
"script.js": "script_js"
}
output_dir = "build"
output_file = "softap_pages.h"
# END CONFIGURATION -----------------------------
import re
import sys
import os
from slimit import minify as js_minify
from csscompressor import compress as css_minify
def compress_html(text):
# strip
text = text.strip()
# Remove comments
text = re.sub(re.compile("<!--(.*?)-->", re.DOTALL), "", text) #DOTALL includes newlines
# Then whitespace
return re.sub(">\s+<","><",text)
# Main ----------------------------------------
# TODO - Add a check to verify no double quotes.
if __name__ == "__main__":
if not os.path.exists(output_dir):
os.makedirs(output_dir)
open_type = "w"
# compress by filetype
for filename, variable in files.items():
text = ""
extension = filename.split(".")[-1]
contentType = {
"js": "application/javascript",
"html": "text/html",
"css": "text/css"
}
with open(os.path.join(source_dir, filename), "r") as f:
text = f.read()
if (extension == "js"):
text = js_minify(text, mangle=True, mangle_toplevel=False)
elif (extension == "css"):
text = css_minify(text)
elif (extension == "html"):
text = compress_html(text)
else:
print >> sys.stderr, "Failed to compress file, unknown extension: " + extension
with open(os.path.join(output_dir, output_file), open_type) as o:
o.write("\nconst char " + variable + "[] = ")
text = text.replace("\\n", "\\\\n") # Need to "double escape" escaped
text = text.replace("\\'", "\\\\'") # newlines and single quotes.
o.write('"'+ text +'";\n')
with open(os.path.join(output_dir, "intructions.txt"), open_type) as o:
if open_type =="w":
# First loop
msg="Add the generated {0} to hal/src/photon/ \n\nIn hal/src/photon/softap.cpp: \n- modify line 923 to read: wiced_http_page_t page[{1}];\n\nIn hal/src/photon/softap_ip.c: \n- add '#include \"{0}\"\n- change the ROOT_HTTP_PAGE_REDIRECT to the page of your choice\n- add the below lines to the list of pages:\n\n"
o.write(msg.format(output_file, 9+len(files)))
template = '{{ "/{0}", "{1}", WICED_STATIC_URL_CONTENT, .url_content.static_data = {{{2}, sizeof({2}) - 1 }}}},\n'
o.write(template.format(filename, contentType[extension], variable))
open_type = "a" # Append future