forked from aantthony/javascript-cas
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsourcemap.js
More file actions
60 lines (58 loc) · 1.26 KB
/
sourcemap.js
File metadata and controls
60 lines (58 loc) · 1.26 KB
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
var fs = require('fs');
var sys = require('util');
var exec = require('child_process').exec;
var child;
if(isNaN(process.argv[2])){
throw('Usage: node lookup.js line_number');
}
Array.prototype.mapAsync = function (f) {
var i;
var count = 0;
var finish;
var l = this.length;
var self = this;
var arr = new Array(l);
setTimeout(function () {
for(i = 0; i < l; i++) {
arr[i] = undefined;
(function (i){
f(self[i], function (n){
arr[i] = n;
count++;
if(count === l) {
finish(arr);
}
});
}(i));
}
}, 0);
return function (done) {
finish = done;
};
};
child = exec('echo $(for i in src/*.js ; do printf "%s\n" "$i" ; done | sort -n)', function (error, stdout, stderr) {
var files = stdout.split(" ");
var search = Number(process.argv[2]);
files.map(function(s) {
return s.trim();
}).mapAsync(function (e, f){
stdout
exec('cat ' + e + ' | wc -l', function (error, stdout, stderr) {
var result = {
filename: e,
lines: Number(stdout.trim())
};
f(result);
});
})(function (a){
var sum = 0;
var i, l;
for(i = 0, l = a.length; i < l; i++) {
if((sum + a[i].lines) >= search) {
console.log("Found in " + a[i].filename + " on line "+ (search - sum));
break;
}
sum += a[i].lines;
}
});
});