monocle-rails 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/monocle/rails/version.rb +1 -1
- data/vendor/assets/.DS_Store +0 -0
- data/vendor/assets/javascripts/deflate.js +2088 -0
- data/vendor/assets/javascripts/inflate.js +2163 -0
- data/vendor/assets/javascripts/mime-types.js +1001 -0
- data/vendor/assets/javascripts/tests/arraybuffer.js +760 -0
- data/vendor/assets/javascripts/tests/base64.js +58 -0
- data/vendor/assets/javascripts/tests/dataview.js +212 -0
- data/vendor/assets/javascripts/tests/lorem.txt +1 -0
- data/vendor/assets/javascripts/tests/lorem.zip +0 -0
- data/vendor/assets/javascripts/tests/lorem2.zip +0 -0
- data/vendor/assets/javascripts/tests/lorem_store.zip +0 -0
- data/vendor/assets/javascripts/tests/test1.html +13 -0
- data/vendor/assets/javascripts/tests/test1.js +46 -0
- data/vendor/assets/javascripts/tests/test10.html +14 -0
- data/vendor/assets/javascripts/tests/test10.js +34 -0
- data/vendor/assets/javascripts/tests/test11.html +14 -0
- data/vendor/assets/javascripts/tests/test11.js +67 -0
- data/vendor/assets/javascripts/tests/test12.html +14 -0
- data/vendor/assets/javascripts/tests/test12.js +66 -0
- data/vendor/assets/javascripts/tests/test13.html +13 -0
- data/vendor/assets/javascripts/tests/test13.js +74 -0
- data/vendor/assets/javascripts/tests/test14.html +13 -0
- data/vendor/assets/javascripts/tests/test14.js +80 -0
- data/vendor/assets/javascripts/tests/test15.html +12 -0
- data/vendor/assets/javascripts/tests/test15.js +60 -0
- data/vendor/assets/javascripts/tests/test16.html +14 -0
- data/vendor/assets/javascripts/tests/test16.js +46 -0
- data/vendor/assets/javascripts/tests/test17.html +15 -0
- data/vendor/assets/javascripts/tests/test17.js +41 -0
- data/vendor/assets/javascripts/tests/test18.html +16 -0
- data/vendor/assets/javascripts/tests/test18.js +46 -0
- data/vendor/assets/javascripts/tests/test2.html +14 -0
- data/vendor/assets/javascripts/tests/test2.js +49 -0
- data/vendor/assets/javascripts/tests/test3.html +14 -0
- data/vendor/assets/javascripts/tests/test3.js +40 -0
- data/vendor/assets/javascripts/tests/test4.html +12 -0
- data/vendor/assets/javascripts/tests/test4.js +40 -0
- data/vendor/assets/javascripts/tests/test5.html +13 -0
- data/vendor/assets/javascripts/tests/test5.js +33 -0
- data/vendor/assets/javascripts/tests/test6.html +13 -0
- data/vendor/assets/javascripts/tests/test6.js +33 -0
- data/vendor/assets/javascripts/tests/test7.html +14 -0
- data/vendor/assets/javascripts/tests/test7.js +18 -0
- data/vendor/assets/javascripts/tests/test8.html +14 -0
- data/vendor/assets/javascripts/tests/test8.js +31 -0
- data/vendor/assets/javascripts/tests/test9.html +14 -0
- data/vendor/assets/javascripts/tests/test9.js +34 -0
- data/vendor/assets/javascripts/tests/util.js +16 -0
- data/vendor/assets/javascripts/zip-ext.js +241 -0
- data/vendor/assets/javascripts/zip-fs.js +538 -0
- data/vendor/assets/javascripts/zip.js +801 -0
- metadata +51 -1
@@ -0,0 +1,58 @@
|
|
1
|
+
/// Code can be found at: https://gist.github.com/1284012
|
2
|
+
|
3
|
+
(function() {
|
4
|
+
|
5
|
+
var a64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', a256 = {
|
6
|
+
indexOf : function(c) {
|
7
|
+
return c.charCodeAt(0);
|
8
|
+
},
|
9
|
+
charAt : String.fromCharCode
|
10
|
+
};
|
11
|
+
|
12
|
+
function code(s, discard, alpha, beta, w1, w2) {
|
13
|
+
s = String(s);
|
14
|
+
var b = 0, x = '', i, c, bs = 1, sb = 1, length = s.length, tmp;
|
15
|
+
for (i = 0; i < length || (!discard && sb > 1); i += 1) {
|
16
|
+
b *= w1;
|
17
|
+
bs *= w1;
|
18
|
+
if (i < length) {
|
19
|
+
c = alpha.indexOf(s.charAt(i));
|
20
|
+
if (c <= -1 || c >= w1) {
|
21
|
+
throw new RangeError();
|
22
|
+
}
|
23
|
+
sb *= w1;
|
24
|
+
b += c;
|
25
|
+
}
|
26
|
+
while (bs >= w2) {
|
27
|
+
bs /= w2;
|
28
|
+
if (sb > 1) {
|
29
|
+
tmp = b;
|
30
|
+
b %= bs;
|
31
|
+
x += beta.charAt((tmp - b) / bs);
|
32
|
+
sb /= w2;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
return x;
|
37
|
+
}
|
38
|
+
|
39
|
+
if (!("btoa" in window))
|
40
|
+
window.btoa = function(s) {
|
41
|
+
s = code(s, false, a256, a64, 256, 64);
|
42
|
+
return s + '===='.slice((s.length % 4) || 4);
|
43
|
+
};
|
44
|
+
|
45
|
+
if (!("atob" in window))
|
46
|
+
window.atob = function(s) {
|
47
|
+
var i;
|
48
|
+
s = String(s).split('=');
|
49
|
+
for (i = s.length - 1; i >= 0; i -= 1) {
|
50
|
+
if (s[i].length % 4 === 1) {
|
51
|
+
throw new RangeError();
|
52
|
+
}
|
53
|
+
s[i] = code(s[i], true, a64, a256, 64, 256);
|
54
|
+
}
|
55
|
+
return s.join('');
|
56
|
+
};
|
57
|
+
|
58
|
+
})();
|
@@ -0,0 +1,212 @@
|
|
1
|
+
|
2
|
+
/*
|
3
|
+
* DataView.js:
|
4
|
+
* An implementation of the DataView class on top of typed arrays.
|
5
|
+
* Useful for Firefox 4 which implements TypedArrays but not DataView.
|
6
|
+
*
|
7
|
+
* Copyright 2011, David Flanagan
|
8
|
+
*
|
9
|
+
* All rights reserved.
|
10
|
+
*
|
11
|
+
* Redistribution and use in source and binary forms, with or without modification,
|
12
|
+
* are permitted provided that the following conditions are met:
|
13
|
+
*
|
14
|
+
* Redistributions of source code must retain the above copyright notice,
|
15
|
+
* this list of conditions and the following disclaimer.
|
16
|
+
*
|
17
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
18
|
+
* this list of conditions and the following disclaimer in the documentation.
|
19
|
+
*
|
20
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
21
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
22
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
23
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
24
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
25
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
26
|
+
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
27
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
28
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
29
|
+
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
*/
|
31
|
+
"use strict";
|
32
|
+
|
33
|
+
(function(global) {
|
34
|
+
// If DataView already exists, do nothing
|
35
|
+
if (global.DataView) return;
|
36
|
+
|
37
|
+
// If ArrayBuffer is not supported, fail with an error
|
38
|
+
if (!global.ArrayBuffer) fail("ArrayBuffer not supported");
|
39
|
+
|
40
|
+
// If ES5 is not supported, fail
|
41
|
+
if (!Object.defineProperties) fail("This module requires ECMAScript 5");
|
42
|
+
|
43
|
+
// Figure if the platform is natively little-endian.
|
44
|
+
// If the integer 0x00000001 is arranged in memory as 01 00 00 00 then
|
45
|
+
// we're on a little endian platform. On a big-endian platform we'd get
|
46
|
+
// get bytes 00 00 00 01 instead.
|
47
|
+
var nativele = new Int8Array(new Int32Array([1]).buffer)[0] === 1;
|
48
|
+
|
49
|
+
// A temporary array for copying or reversing bytes into.
|
50
|
+
// Since js is single-threaded, we only need this one static copy
|
51
|
+
var temp = new Uint8Array(8);
|
52
|
+
|
53
|
+
// The DataView() constructor
|
54
|
+
global.DataView = function DataView(buffer, offset, length) {
|
55
|
+
if (!(buffer instanceof ArrayBuffer)) fail("Bad ArrayBuffer");
|
56
|
+
|
57
|
+
// Default values for omitted arguments
|
58
|
+
offset = offset || 0;
|
59
|
+
length = length || (buffer.byteLength - offset);
|
60
|
+
|
61
|
+
if (offset < 0 || length < 0 || offset + length > buffer.byteLength) fail("Illegal offset and/or length");
|
62
|
+
|
63
|
+
// Define the 3 read-only, non-enumerable ArrayBufferView properties
|
64
|
+
Object.defineProperties(this, {
|
65
|
+
buffer: {
|
66
|
+
value: buffer,
|
67
|
+
enumerable: false,
|
68
|
+
writable: false,
|
69
|
+
configurable: false
|
70
|
+
},
|
71
|
+
byteOffset: {
|
72
|
+
value: offset,
|
73
|
+
enumerable: false,
|
74
|
+
writable: false,
|
75
|
+
configurable: false
|
76
|
+
},
|
77
|
+
byteLength: {
|
78
|
+
value: length,
|
79
|
+
enumerable: false,
|
80
|
+
writable: false,
|
81
|
+
configurable: false
|
82
|
+
},
|
83
|
+
_bytes: {
|
84
|
+
value: new Uint8Array(buffer, offset, length),
|
85
|
+
enumerable: false,
|
86
|
+
writable: false,
|
87
|
+
configurable: false
|
88
|
+
}
|
89
|
+
});
|
90
|
+
}
|
91
|
+
|
92
|
+
// The DataView prototype object
|
93
|
+
global.DataView.prototype = {
|
94
|
+
constructor: DataView,
|
95
|
+
|
96
|
+
getInt8: function getInt8(offset) {
|
97
|
+
return get(this, Int8Array, 1, offset);
|
98
|
+
},
|
99
|
+
getUint8: function getUint8(offset) {
|
100
|
+
return get(this, Uint8Array, 1, offset);
|
101
|
+
},
|
102
|
+
getInt16: function getInt16(offset, le) {
|
103
|
+
return get(this, Int16Array, 2, offset, le);
|
104
|
+
},
|
105
|
+
getUint16: function getUint16(offset, le) {
|
106
|
+
return get(this, Uint16Array, 2, offset, le);
|
107
|
+
},
|
108
|
+
getInt32: function getInt32(offset, le) {
|
109
|
+
return get(this, Int32Array, 4, offset, le);
|
110
|
+
},
|
111
|
+
getUint32: function getUint32(offset, le) {
|
112
|
+
return get(this, Uint32Array, 4, offset, le);
|
113
|
+
},
|
114
|
+
getFloat32: function getFloat32(offset, le) {
|
115
|
+
return get(this, Float32Array, 4, offset, le);
|
116
|
+
},
|
117
|
+
getFloat64: function getFloat32(offset, le) {
|
118
|
+
return get(this, Float64Array, 8, offset, le);
|
119
|
+
},
|
120
|
+
|
121
|
+
|
122
|
+
setInt8: function setInt8(offset, value) {
|
123
|
+
set(this, Int8Array, 1, offset, value);
|
124
|
+
},
|
125
|
+
setUint8: function setUint8(offset, value) {
|
126
|
+
set(this, Uint8Array, 1, offset, value);
|
127
|
+
},
|
128
|
+
setInt16: function setInt16(offset, value, le) {
|
129
|
+
set(this, Int16Array, 2, offset, value, le);
|
130
|
+
},
|
131
|
+
setUint16: function setUint16(offset, value, le) {
|
132
|
+
set(this, Uint16Array, 2, offset, value, le);
|
133
|
+
},
|
134
|
+
setInt32: function setInt32(offset, value, le) {
|
135
|
+
set(this, Int32Array, 4, offset, value, le);
|
136
|
+
},
|
137
|
+
setUint32: function setUint32(offset, value, le) {
|
138
|
+
set(this, Uint32Array, 4, offset, value, le);
|
139
|
+
},
|
140
|
+
setFloat32: function setFloat32(offset, value, le) {
|
141
|
+
set(this, Float32Array, 4, offset, value, le);
|
142
|
+
},
|
143
|
+
setFloat64: function setFloat64(offset, value, le) {
|
144
|
+
set(this, Float64Array, 8, offset, value, le);
|
145
|
+
}
|
146
|
+
};
|
147
|
+
|
148
|
+
// The get() utility function used by the get methods
|
149
|
+
|
150
|
+
|
151
|
+
function get(view, type, size, offset, le) {
|
152
|
+
if (offset === undefined) fail("Missing required offset argument");
|
153
|
+
|
154
|
+
if (offset < 0 || offset + size > view.byteLength) fail("Invalid index: " + offset);
|
155
|
+
|
156
|
+
if (size === 1 || !! le === nativele) {
|
157
|
+
// This is the easy case: the desired endianness
|
158
|
+
// matches the native endianness.
|
159
|
+
// Typed arrays require proper alignment. DataView does not.
|
160
|
+
if ((view.byteOffset + offset) % size === 0) return (new type(view.buffer, view.byteOffset + offset, 1))[0];
|
161
|
+
else {
|
162
|
+
// Copy bytes into the temp array, to fix alignment
|
163
|
+
for (var i = 0; i < size; i++)
|
164
|
+
temp[i] = view._bytes[offset + i];
|
165
|
+
// Now wrap that buffer with an array of the desired type
|
166
|
+
return (new type(temp.buffer))[0];
|
167
|
+
}
|
168
|
+
} else {
|
169
|
+
// If the native endianness doesn't match the desired, then
|
170
|
+
// we have to reverse the bytes
|
171
|
+
for (var i = 0; i < size; i++)
|
172
|
+
temp[size - i - 1] = view._bytes[offset + i];
|
173
|
+
return (new type(temp.buffer))[0];
|
174
|
+
}
|
175
|
+
}
|
176
|
+
|
177
|
+
// The set() utility function used by the set methods
|
178
|
+
|
179
|
+
|
180
|
+
function set(view, type, size, offset, value, le) {
|
181
|
+
if (offset === undefined) fail("Missing required offset argument");
|
182
|
+
if (value === undefined) fail("Missing required value argument");
|
183
|
+
|
184
|
+
if (offset < 0 || offset + size > view.byteLength) fail("Invalid index: " + offset);
|
185
|
+
|
186
|
+
if (size === 1 || !! le === nativele) {
|
187
|
+
// This is the easy case: the desired endianness
|
188
|
+
// matches the native endianness.
|
189
|
+
if ((view.byteOffset + offset) % size === 0) {
|
190
|
+
(new type(view.buffer, view.byteOffset + offset, 1))[0] = value;
|
191
|
+
} else {
|
192
|
+
(new type(temp.buffer))[0] = value;
|
193
|
+
// Now copy the bytes into the view's buffer
|
194
|
+
for (var i = 0; i < size; i++)
|
195
|
+
view._bytes[i + offset] = temp[i];
|
196
|
+
}
|
197
|
+
} else {
|
198
|
+
// If the native endianness doesn't match the desired, then
|
199
|
+
// we have to reverse the bytes
|
200
|
+
// Store the value into our temporary buffer
|
201
|
+
(new type(temp.buffer))[0] = value;
|
202
|
+
|
203
|
+
// Now copy the bytes, in reverse order, into the view's buffer
|
204
|
+
for (var i = 0; i < size; i++)
|
205
|
+
view._bytes[offset + i] = temp[size - 1 - i];
|
206
|
+
}
|
207
|
+
}
|
208
|
+
|
209
|
+
function fail(msg) {
|
210
|
+
throw new Error(msg);
|
211
|
+
}
|
212
|
+
}(this));
|
@@ -0,0 +1 @@
|
|
1
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset='utf-8'>
|
5
|
+
<title>Demo Blob</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<script type="text/javascript" src="../zip.js"></script>
|
9
|
+
<script type="text/javascript" src="../mime-types.js"></script>
|
10
|
+
<script type="text/javascript" src="dataview.js"></script>
|
11
|
+
<script type="text/javascript" src="test1.js"></script>
|
12
|
+
</body>
|
13
|
+
</html>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
var TEXT_CONTENT = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.";
|
2
|
+
var FILENAME = "lorem.txt";
|
3
|
+
var blob;
|
4
|
+
|
5
|
+
function onerror(message) {
|
6
|
+
console.error(message);
|
7
|
+
}
|
8
|
+
|
9
|
+
function zipBlob(blob, callback) {
|
10
|
+
zip.createWriter(new zip.BlobWriter("application/zip"), function(zipWriter) {
|
11
|
+
zipWriter.add(FILENAME, new zip.BlobReader(blob), function() {
|
12
|
+
zipWriter.close(callback);
|
13
|
+
});
|
14
|
+
}, onerror);
|
15
|
+
}
|
16
|
+
|
17
|
+
function unzipBlob(blob, callback) {
|
18
|
+
zip.createReader(new zip.BlobReader(blob), function(zipReader) {
|
19
|
+
zipReader.getEntries(function(entries) {
|
20
|
+
entries[0].getData(new zip.BlobWriter(zip.getMimeType(entries[0].filename)), function(data) {
|
21
|
+
zipReader.close();
|
22
|
+
callback(data);
|
23
|
+
});
|
24
|
+
});
|
25
|
+
}, onerror);
|
26
|
+
}
|
27
|
+
|
28
|
+
function logBlobText(blob) {
|
29
|
+
var reader = new FileReader();
|
30
|
+
reader.onload = function(e) {
|
31
|
+
console.log(e.target.result);
|
32
|
+
console.log("--------------");
|
33
|
+
};
|
34
|
+
reader.readAsText(blob);
|
35
|
+
}
|
36
|
+
|
37
|
+
zip.workerScriptsPath = "../";
|
38
|
+
blob = new Blob([ TEXT_CONTENT ], {
|
39
|
+
type : zip.getMimeType(FILENAME)
|
40
|
+
});
|
41
|
+
logBlobText(blob);
|
42
|
+
zipBlob(blob, function(zippedBlob) {
|
43
|
+
unzipBlob(zippedBlob, function(unzippedBlob) {
|
44
|
+
logBlobText(unzippedBlob);
|
45
|
+
});
|
46
|
+
});
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset='utf-8'>
|
5
|
+
<title>Demo STORE unzip</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<script type="text/javascript" src="../zip.js"></script>
|
9
|
+
<script type="text/javascript" src="../zip-fs.js"></script>
|
10
|
+
<script type="text/javascript" src="../zip-ext.js"></script>
|
11
|
+
<script type="text/javascript" src="dataview.js"></script>
|
12
|
+
<script type="text/javascript" src="test10.js"></script>
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
var URL = "lorem_store.zip";
|
2
|
+
|
3
|
+
var zipFs = new zip.fs.FS();
|
4
|
+
|
5
|
+
function onerror(message) {
|
6
|
+
console.error(message);
|
7
|
+
}
|
8
|
+
|
9
|
+
function zipImportedZip(callback) {
|
10
|
+
var directory = zipFs.root.addDirectory("import");
|
11
|
+
directory.importHttpContent(URL, false, function() {
|
12
|
+
zipFs.exportBlob(callback);
|
13
|
+
}, onerror);
|
14
|
+
}
|
15
|
+
|
16
|
+
function unzipBlob(blob, callback) {
|
17
|
+
zipFs.importBlob(blob, function() {
|
18
|
+
var directory = zipFs.root.getChildByName("import");
|
19
|
+
var firstEntry = directory.children[0];
|
20
|
+
firstEntry.getText(callback);
|
21
|
+
}, onerror);
|
22
|
+
}
|
23
|
+
|
24
|
+
function logText(text) {
|
25
|
+
console.log(text);
|
26
|
+
console.log("--------------");
|
27
|
+
}
|
28
|
+
|
29
|
+
zip.workerScriptsPath = "../";
|
30
|
+
zipImportedZip(function(zippedBlob) {
|
31
|
+
unzipBlob(zippedBlob, function(unzippedText) {
|
32
|
+
logText(unzippedText);
|
33
|
+
});
|
34
|
+
});
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset='utf-8'>
|
5
|
+
<title>Demo ZipEntry.prototype.getFileEntry (File)</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<script type="text/javascript" src="../zip.js"></script>
|
9
|
+
<script type="text/javascript" src="../zip-fs.js"></script>
|
10
|
+
<script type="text/javascript" src="../zip-ext.js"></script>
|
11
|
+
<script type="text/javascript" src="dataview.js"></script>
|
12
|
+
<script type="text/javascript" src="test11.js"></script>
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,67 @@
|
|
1
|
+
var requestFileSystem = window.webkitRequestFileSystem || window.mozRequestFileSystem || window.msRequestFileSystem || window.requestFileSystem;
|
2
|
+
var URL = "lorem.zip", FILENAME = "lorem.txt";
|
3
|
+
var filesystem, zipFs = new zip.fs.FS();
|
4
|
+
|
5
|
+
function onerror(message) {
|
6
|
+
console.error(message);
|
7
|
+
}
|
8
|
+
|
9
|
+
function removeRecursively(entry, onend, onerror) {
|
10
|
+
var rootReader = entry.createReader();
|
11
|
+
rootReader.readEntries(function(entries) {
|
12
|
+
var i = 0;
|
13
|
+
|
14
|
+
function next() {
|
15
|
+
i++;
|
16
|
+
removeNextEntry();
|
17
|
+
}
|
18
|
+
|
19
|
+
function removeNextEntry() {
|
20
|
+
var entry = entries[i];
|
21
|
+
if (entry) {
|
22
|
+
if (entry.isDirectory)
|
23
|
+
removeRecursively(entry, next, onerror);
|
24
|
+
if (entry.isFile)
|
25
|
+
entry.remove(next, onerror);
|
26
|
+
} else
|
27
|
+
onend();
|
28
|
+
}
|
29
|
+
|
30
|
+
removeNextEntry();
|
31
|
+
}, onerror);
|
32
|
+
}
|
33
|
+
|
34
|
+
function importZipToFilesystem(callback) {
|
35
|
+
zipFs.importHttpContent(URL, false, function() {
|
36
|
+
filesystem.root.getFile(FILENAME, {
|
37
|
+
create : true
|
38
|
+
}, function(fileEntry) {
|
39
|
+
var zippedFile = zipFs.root.getChildByName(FILENAME);
|
40
|
+
zippedFile.getFileEntry(fileEntry, callback, null, onerror);
|
41
|
+
}, onerror);
|
42
|
+
}, onerror);
|
43
|
+
}
|
44
|
+
|
45
|
+
function logFile(file) {
|
46
|
+
var reader = new FileReader();
|
47
|
+
reader.onload = function(event) {
|
48
|
+
console.log(event.target.result);
|
49
|
+
console.log("--------------");
|
50
|
+
};
|
51
|
+
reader.onerror = onerror;
|
52
|
+
reader.readAsText(file);
|
53
|
+
}
|
54
|
+
|
55
|
+
function test() {
|
56
|
+
importZipToFilesystem(function() {
|
57
|
+
filesystem.root.getFile(FILENAME, null, function(fileEntry) {
|
58
|
+
fileEntry.file(logFile, onerror);
|
59
|
+
}, onerror);
|
60
|
+
}, onerror);
|
61
|
+
}
|
62
|
+
|
63
|
+
zip.workerScriptsPath = "../";
|
64
|
+
requestFileSystem(TEMPORARY, 4 * 1024 * 1024 * 1024, function(fs) {
|
65
|
+
filesystem = fs;
|
66
|
+
removeRecursively(filesystem.root, test, onerror);
|
67
|
+
}, onerror);
|