changeset 27:174a19e03273

z5 js files are now encoded using base64, which makes them much smaller.
author Atul Varma <varmaa@toolness.com>
date Mon, 12 May 2008 00:45:00 -0700
parents 9d9d8c76d52d
children 44dcac60ed30
files base64.js gnusto.html tests/test_gnusto_engine.js z5_to_js_array.py
diffstat 4 files changed, 34 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/base64.js	Mon May 12 00:45:00 2008 -0700
@@ -0,0 +1,27 @@
+/* Taken from:
+ *
+ * http://ecmanaut.blogspot.com/2007/11/javascript-base64-singleton.html
+ *
+ * With minor modifications to decode a b64 string to a byte array instead
+ * of a string. */
+
+var base64_tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+function decode_base64(data) {
+    var out = [], c1, c2, c3, e1, e2, e3, e4;
+    for (var i = 0; i < data.length; ) {
+        e1 = base64_tab.indexOf(data.charAt(i++));
+        e2 = base64_tab.indexOf(data.charAt(i++));
+        e3 = base64_tab.indexOf(data.charAt(i++));
+        e4 = base64_tab.indexOf(data.charAt(i++));
+        c1 = (e1 << 2) + (e2 >> 4);
+        c2 = ((e2 & 15) << 4) + (e3 >> 2);
+        c3 = ((e3 & 3) << 6) + e4;
+        out.push(c1);
+        if (e3 != 64)
+            out.push(c2);
+        if (e4 != 64)
+            out.push(c3);
+    }
+    return out;
+}
--- a/gnusto.html	Mon May 12 00:01:59 2008 -0700
+++ b/gnusto.html	Mon May 12 00:45:00 2008 -0700
@@ -11,6 +11,7 @@
 <div id="content"></div>
 </body>
 <script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="base64.js"></script>
 <script type="text/javascript" src="troll.js"></script>
 <script type="text/javascript" src="gnusto-engine.js"></script>
 <script type="text/javascript" src="engine-runner.js"></script>
--- a/tests/test_gnusto_engine.js	Mon May 12 00:01:59 2008 -0700
+++ b/tests/test_gnusto_engine.js	Mon May 12 00:45:00 2008 -0700
@@ -1,4 +1,4 @@
-load("troll.js", "gnusto-engine.js");
+load("base64.js", "troll.js", "gnusto-engine.js");
 
 var gInputTimes = 0;
 
--- a/z5_to_js_array.py	Mon May 12 00:01:59 2008 -0700
+++ b/z5_to_js_array.py	Mon May 12 00:45:00 2008 -0700
@@ -1,11 +1,14 @@
 import os
 import sys
+import base64
 
 if __name__ == "__main__":
     if len(sys.argv) != 2:
         print "usage: %s <z5-file>" % sys.argv[0]
         sys.exit(-1)
     contents = open(sys.argv[1], "rb").read()
-    byte_contents = [str(ord(i)) for i in contents]
     filename_var = os.path.basename(sys.argv[1]).replace(".", "_")
-    print "%s = [%s];" % (filename_var, ",".join(byte_contents))
+    print "var %s = decode_base64('%s');" % (
+        filename_var,
+        base64.b64encode(contents)
+        )