-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathfile-parser.js
53 lines (39 loc) · 1.25 KB
/
file-parser.js
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
var FileApi = require('file-api'),
FileReader = FileApi.FileReader;
var LONG = 4;
var TIME = LONG * 2;
var parseLongAt = function(DOMString, offset) {
var a = DOMString.charCodeAt(offset);
var b = DOMString.charCodeAt(offset + 1);
var c = DOMString.charCodeAt(offset + 2);
var d = DOMString.charCodeAt(offset + 3);
var long = (((((d << 8) + c) << 8) + b) << 8) + a;
if (long < 0) long += 4294967296;
return long;
};
module.exports = function(file, cb) {
var ttyrec = {};
ttyrec.positions = [];
var offset = 0;
var size = file.size;
var parse_helper = function(evt) {
ttyrec.blob = evt.target.result;
while (offset < size) {
var sec = parseLongAt(ttyrec.blob, offset);
var usec = parseLongAt(ttyrec.blob, offset + LONG);
var length = parseLongAt(ttyrec.blob, offset + TIME);
offset += TIME + LONG;
ttyrec.positions.push({
sec: sec,
usec: usec,
start: offset,
end: offset + length
});
offset += length;
}
cb(null, ttyrec);
};
var reader = new FileReader();
reader.onload = parse_helper;
reader.readAsBinaryString(file);
};