holmes 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +10 -0
- data/Rakefile +1 -0
- data/holmes.gemspec +24 -0
- data/lib/holmes.rb +38 -0
- data/lib/holmes/node_modules/detective/README.markdown +64 -0
- data/lib/holmes/node_modules/detective/example/strings.js +6 -0
- data/lib/holmes/node_modules/detective/example/strings_src.js +3 -0
- data/lib/holmes/node_modules/detective/index.js +65 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/.npmignore +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/README.markdown +185 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/browserify.js +4296 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/example/microwave.js +7 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/example/web/bs.js +4832 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/example/web/index.html +14 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/example/web/main.js +17 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/example/web/server.js +12 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/example/wrap.js +7 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/index.html +8 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/index.js +208 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/main.js +11 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/.bin/uglifyjs +317 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/.npmignore +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/LICENSE +24 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/README.markdown +237 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/examples/json.js +16 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/examples/leaves.js +15 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/examples/negative.js +8 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/examples/scrub.js +10 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/examples/stringify.js +38 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/index.js +267 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/main.js +10 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/package.json +18 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/circular.js +115 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/date.js +35 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/equal.js +220 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/instance.js +17 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/interface.js +42 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/json.js +47 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/keys.js +29 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/leaves.js +21 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/lib/deep_equal.js +92 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/mutability.js +252 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/negative.js +20 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/obj.js +15 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/siblings.js +35 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/stop.js +41 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/stringify.js +36 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/subexpr.js +34 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/traverse/test/super_deep.js +55 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/.npmignore +4 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/README.html +888 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/README.org +463 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/bin/uglifyjs +317 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/docstyle.css +75 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/lib/object-ast.js +75 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/lib/parse-js.js +1341 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/lib/process.js +1949 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/lib/squeeze-more.js +51 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/package.json +22 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/beautify.js +28 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/testparser.js +402 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array1.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array2.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array3.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/array4.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/assignment.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/concatstring.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/const.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/forstatement.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/if.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue10.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue11.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue13.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue14.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue16.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue17.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue20.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue21.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue25.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue27.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue28.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue29.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue30.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue34.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue4.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue48.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue50.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue53.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue68.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue69.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/issue9.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/mangle.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/var.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/expected/with.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array1.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array2.js +4 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array3.js +4 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/array4.js +6 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/assignment.js +20 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/concatstring.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/const.js +5 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js +4 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/forstatement.js +10 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/if.js +6 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/ifreturn.js +9 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js +16 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue10.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue11.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue13.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue14.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue16.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue17.js +4 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue20.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue21.js +6 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue25.js +7 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue27.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue28.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue29.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue30.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue34.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue4.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue48.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue50.js +9 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue53.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue54.1.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue68.js +5 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue69.js +1 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/issue9.js +4 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/mangle.js +5 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/strict-equals.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/var.js +3 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/compress/test/with.js +2 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/test/unit/scripts.js +55 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/tmp/hoist.js +33 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/tmp/instrument.js +97 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/tmp/instrument2.js +138 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/tmp/test.js +16 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/node_modules/uglify-js/uglify-js.js +17 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/package.json +43 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/server.js +4 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/ast.js +29 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/err.js +47 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/fail.js +8 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/fail/src.js +60 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/label.js +110 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/microwave.js +33 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/parent.js +26 -0
- data/lib/holmes/node_modules/detective/node_modules/burrito/test/wrap.js +157 -0
- data/lib/holmes/node_modules/detective/package.json +39 -0
- data/lib/holmes/node_modules/detective/test/both.js +10 -0
- data/lib/holmes/node_modules/detective/test/files/both.js +4 -0
- data/lib/holmes/node_modules/detective/test/files/nested.js +22 -0
- data/lib/holmes/node_modules/detective/test/files/strings.js +13 -0
- data/lib/holmes/node_modules/detective/test/files/word.js +13 -0
- data/lib/holmes/node_modules/detective/test/nested.js +8 -0
- data/lib/holmes/node_modules/detective/test/strings.js +8 -0
- data/lib/holmes/node_modules/detective/test/word.js +11 -0
- data/lib/holmes/require.js +5 -0
- data/lib/holmes/runner.js +20 -0
- data/lib/holmes/version.rb +3 -0
- metadata +223 -0
@@ -0,0 +1,110 @@
|
|
1
|
+
var assert = require('assert');
|
2
|
+
var burrito = require('../');
|
3
|
+
|
4
|
+
exports.callLabel = function () {
|
5
|
+
var times = 0;
|
6
|
+
var src = burrito('foo(10)', function (node) {
|
7
|
+
if (node.name === 'call') {
|
8
|
+
assert.equal(node.label(), 'foo');
|
9
|
+
times ++;
|
10
|
+
}
|
11
|
+
});
|
12
|
+
|
13
|
+
assert.equal(times, 1);
|
14
|
+
};
|
15
|
+
|
16
|
+
exports.varLabel = function () {
|
17
|
+
var times = 0;
|
18
|
+
var src = burrito('var x = 2', function (node) {
|
19
|
+
if (node.name === 'var') {
|
20
|
+
assert.deepEqual(node.label(), [ 'x' ]);
|
21
|
+
times ++;
|
22
|
+
}
|
23
|
+
});
|
24
|
+
|
25
|
+
assert.equal(times, 1);
|
26
|
+
};
|
27
|
+
|
28
|
+
exports.varsLabel = function () {
|
29
|
+
var times = 0;
|
30
|
+
var src = burrito('var x = 2, y = 3', function (node) {
|
31
|
+
if (node.name === 'var') {
|
32
|
+
assert.deepEqual(node.label(), [ 'x', 'y' ]);
|
33
|
+
times ++;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
|
37
|
+
assert.equal(times, 1);
|
38
|
+
};
|
39
|
+
|
40
|
+
exports.defunLabel = function () {
|
41
|
+
var times = 0;
|
42
|
+
var src = burrito('function moo () {}', function (node) {
|
43
|
+
if (node.name === 'defun') {
|
44
|
+
assert.deepEqual(node.label(), 'moo');
|
45
|
+
times ++;
|
46
|
+
}
|
47
|
+
});
|
48
|
+
|
49
|
+
assert.equal(times, 1);
|
50
|
+
};
|
51
|
+
|
52
|
+
exports.functionLabel = function () {
|
53
|
+
var times = 0;
|
54
|
+
var src = burrito('(function zzz () {})()', function (node) {
|
55
|
+
if (node.name === 'function') {
|
56
|
+
assert.deepEqual(node.label(), 'zzz');
|
57
|
+
times ++;
|
58
|
+
}
|
59
|
+
});
|
60
|
+
|
61
|
+
assert.equal(times, 1);
|
62
|
+
};
|
63
|
+
|
64
|
+
exports.anonFunctionLabel = function () {
|
65
|
+
var times = 0;
|
66
|
+
var src = burrito('(function () {})()', function (node) {
|
67
|
+
if (node.name === 'function') {
|
68
|
+
assert.ok(node.label() === null);
|
69
|
+
times ++;
|
70
|
+
}
|
71
|
+
});
|
72
|
+
|
73
|
+
assert.equal(times, 1);
|
74
|
+
};
|
75
|
+
|
76
|
+
exports.dotCallLabel = function () {
|
77
|
+
var times = 0;
|
78
|
+
var src = burrito('process.nextTick(fn)', function (node) {
|
79
|
+
if (node.name === 'call') {
|
80
|
+
assert.equal(node.label(), 'nextTick');
|
81
|
+
times ++;
|
82
|
+
}
|
83
|
+
});
|
84
|
+
|
85
|
+
assert.equal(times, 1);
|
86
|
+
};
|
87
|
+
|
88
|
+
exports.tripleDotLabel = function () {
|
89
|
+
var times = 0;
|
90
|
+
var src = burrito('a.b.c(fn)', function (node) {
|
91
|
+
if (node.name === 'call') {
|
92
|
+
assert.equal(node.label(), 'c');
|
93
|
+
times ++;
|
94
|
+
}
|
95
|
+
});
|
96
|
+
|
97
|
+
assert.equal(times, 1);
|
98
|
+
};
|
99
|
+
|
100
|
+
exports.exprLabel = function () {
|
101
|
+
var times = 0;
|
102
|
+
var src = burrito('a.b[x+1](fn)', function (node) {
|
103
|
+
if (node.name === 'call') {
|
104
|
+
assert.ok(node.label() === null);
|
105
|
+
times ++;
|
106
|
+
}
|
107
|
+
});
|
108
|
+
|
109
|
+
assert.equal(times, 1);
|
110
|
+
};
|
@@ -0,0 +1,33 @@
|
|
1
|
+
var assert = require('assert');
|
2
|
+
var burrito = require('../');
|
3
|
+
|
4
|
+
exports.microwave = function () {
|
5
|
+
var times = 0;
|
6
|
+
var context = {
|
7
|
+
f : function (x) { return x + 1 },
|
8
|
+
g : function (x) { return x + 2 },
|
9
|
+
h : function (x) { return x + 3 },
|
10
|
+
z : function (x) {
|
11
|
+
times ++;
|
12
|
+
return x * 10;
|
13
|
+
},
|
14
|
+
};
|
15
|
+
|
16
|
+
var res = burrito.microwave('f(g(h(5)))', context, function (node) {
|
17
|
+
if (node.name === 'call') {
|
18
|
+
node.wrap(function (s) {
|
19
|
+
return 'z(' + s + ')';
|
20
|
+
});
|
21
|
+
}
|
22
|
+
});
|
23
|
+
|
24
|
+
assert.equal(res, (((((5 + 3) * 10) + 2) * 10) + 1) * 10);
|
25
|
+
assert.equal(times, 3);
|
26
|
+
};
|
27
|
+
|
28
|
+
exports.emptyContext = function () {
|
29
|
+
var res = burrito.microwave('Math.sin(2)', function (node) {
|
30
|
+
if (node.name === 'num') node.wrap('Math.PI / %s');
|
31
|
+
});
|
32
|
+
assert.equal(res, 1);
|
33
|
+
};
|
@@ -0,0 +1,26 @@
|
|
1
|
+
var assert = require('assert');
|
2
|
+
var burrito = require('../');
|
3
|
+
|
4
|
+
exports.checkParent = function () {
|
5
|
+
var src = 'Math.tan(0) + Math.sin(0)';
|
6
|
+
|
7
|
+
var res = burrito.microwave(src, function (node) {
|
8
|
+
if (node.name === 'binary') {
|
9
|
+
node.wrap('%a - %b');
|
10
|
+
}
|
11
|
+
else if (node.name === 'num') {
|
12
|
+
assert.equal(node.parent().value[0][0], 'dot');
|
13
|
+
|
14
|
+
var fn = node.parent().value[0][2];
|
15
|
+
if (fn === 'sin') {
|
16
|
+
node.wrap('Math.PI / 2');
|
17
|
+
}
|
18
|
+
else if (fn === 'tan') {
|
19
|
+
node.wrap('Math.PI / 4');
|
20
|
+
}
|
21
|
+
else assert.fail('Unknown fn');
|
22
|
+
}
|
23
|
+
});
|
24
|
+
|
25
|
+
assert.equal(res, Math.tan(Math.PI / 4) - Math.sin(Math.PI / 2)); // ~ 0
|
26
|
+
};
|
@@ -0,0 +1,157 @@
|
|
1
|
+
var assert = require('assert');
|
2
|
+
var burrito = require('../');
|
3
|
+
var vm = require('vm');
|
4
|
+
|
5
|
+
exports.preserveTernaryParentheses = function () {
|
6
|
+
var originalSource = '"anything" + (x ? y : z) + "anything"';
|
7
|
+
var burritoSource = burrito(originalSource, function (node) {
|
8
|
+
// do nothing. we just want to check that ternary parens are persisted
|
9
|
+
});
|
10
|
+
|
11
|
+
var ctxt = {
|
12
|
+
x : false,
|
13
|
+
y : 'y_'+~~(Math.random()*10),
|
14
|
+
z : 'z_'+~~(Math.random()*10)
|
15
|
+
};
|
16
|
+
|
17
|
+
var expectedOutput = vm.runInNewContext(originalSource, ctxt);
|
18
|
+
var burritoOutput = vm.runInNewContext(burritoSource, ctxt);
|
19
|
+
|
20
|
+
assert.equal(burritoOutput, expectedOutput);
|
21
|
+
|
22
|
+
ctxt.x = true;
|
23
|
+
|
24
|
+
expectedOutput = vm.runInNewContext(originalSource, ctxt);
|
25
|
+
burritoOutput = vm.runInNewContext(burritoSource, ctxt);
|
26
|
+
|
27
|
+
assert.equal(burritoOutput, expectedOutput);
|
28
|
+
};
|
29
|
+
|
30
|
+
exports.wrapCalls = function () {
|
31
|
+
var src = burrito('f() && g(h())\nfoo()', function (node) {
|
32
|
+
if (node.name === 'call') node.wrap('qqq(%s)');
|
33
|
+
if (node.name === 'binary') node.wrap('bbb(%s)');
|
34
|
+
assert.ok(node.state);
|
35
|
+
assert.equal(this, node.state);
|
36
|
+
});
|
37
|
+
|
38
|
+
var tg = setTimeout(function () {
|
39
|
+
assert.fail('g() never called');
|
40
|
+
}, 5000);
|
41
|
+
|
42
|
+
var times = { bbb : 0, qqq : 0 };
|
43
|
+
|
44
|
+
var res = [];
|
45
|
+
vm.runInNewContext(src, {
|
46
|
+
bbb : function (x) {
|
47
|
+
times.bbb ++;
|
48
|
+
res.push(x);
|
49
|
+
return x;
|
50
|
+
},
|
51
|
+
qqq : function (x) {
|
52
|
+
times.qqq ++;
|
53
|
+
res.push(x);
|
54
|
+
return x;
|
55
|
+
},
|
56
|
+
f : function () { return true },
|
57
|
+
g : function (h) {
|
58
|
+
clearTimeout(tg);
|
59
|
+
assert.equal(h, 7);
|
60
|
+
return h !== 7
|
61
|
+
},
|
62
|
+
h : function () { return 7 },
|
63
|
+
foo : function () { return 'foo!' },
|
64
|
+
});
|
65
|
+
|
66
|
+
assert.deepEqual(res, [
|
67
|
+
true, // f()
|
68
|
+
7, // h()
|
69
|
+
false, // g(h())
|
70
|
+
false, // f() && g(h())
|
71
|
+
'foo!', // foo()
|
72
|
+
]);
|
73
|
+
assert.equal(times.bbb, 1);
|
74
|
+
assert.equal(times.qqq, 4);
|
75
|
+
};
|
76
|
+
|
77
|
+
exports.wrapFn = function () {
|
78
|
+
var src = burrito('f(g(h(5)))', function (node) {
|
79
|
+
if (node.name === 'call') {
|
80
|
+
node.wrap(function (s) {
|
81
|
+
return 'z(' + s + ')';
|
82
|
+
});
|
83
|
+
}
|
84
|
+
});
|
85
|
+
|
86
|
+
var times = 0;
|
87
|
+
assert.equal(
|
88
|
+
vm.runInNewContext(src, {
|
89
|
+
f : function (x) { return x + 1 },
|
90
|
+
g : function (x) { return x + 2 },
|
91
|
+
h : function (x) { return x + 3 },
|
92
|
+
z : function (x) {
|
93
|
+
times ++;
|
94
|
+
return x * 10;
|
95
|
+
},
|
96
|
+
}),
|
97
|
+
(((((5 + 3) * 10) + 2) * 10) + 1) * 10
|
98
|
+
);
|
99
|
+
assert.equal(times, 3);
|
100
|
+
};
|
101
|
+
|
102
|
+
exports.binaryString = function () {
|
103
|
+
var src = 'z(x + y)';
|
104
|
+
var context = {
|
105
|
+
x : 3,
|
106
|
+
y : 4,
|
107
|
+
z : function (n) { return n * 10 },
|
108
|
+
};
|
109
|
+
|
110
|
+
var res = burrito.microwave(src, context, function (node) {
|
111
|
+
if (node.name === 'binary') {
|
112
|
+
node.wrap('%a*2 - %b*2');
|
113
|
+
}
|
114
|
+
});
|
115
|
+
|
116
|
+
assert.equal(res, 10 * (3*2 - 4*2));
|
117
|
+
};
|
118
|
+
|
119
|
+
exports.binaryFn = function () {
|
120
|
+
var src = 'z(x + y)';
|
121
|
+
var context = {
|
122
|
+
x : 3,
|
123
|
+
y : 4,
|
124
|
+
z : function (n) { return n * 10 },
|
125
|
+
};
|
126
|
+
|
127
|
+
var res = burrito.microwave(src, context, function (node) {
|
128
|
+
if (node.name === 'binary') {
|
129
|
+
node.wrap(function (expr, a, b) {
|
130
|
+
return '(' + a + ')*2 - ' + '(' + b + ')*2';
|
131
|
+
});
|
132
|
+
}
|
133
|
+
});
|
134
|
+
|
135
|
+
assert.equal(res, 10 * (3*2 - 4*2));
|
136
|
+
};
|
137
|
+
|
138
|
+
exports.intersperse = function () {
|
139
|
+
var src = '(' + (function () {
|
140
|
+
f();
|
141
|
+
g();
|
142
|
+
}).toString() + ')()';
|
143
|
+
|
144
|
+
var times = { f : 0, g : 0, zzz : 0 };
|
145
|
+
|
146
|
+
var context = {
|
147
|
+
f : function () { times.f ++ },
|
148
|
+
g : function () { times.g ++ },
|
149
|
+
zzz : function () { times.zzz ++ },
|
150
|
+
};
|
151
|
+
|
152
|
+
burrito.microwave(src, context, function (node) {
|
153
|
+
if (node.name === 'stat') node.wrap('{ zzz(); %s }');
|
154
|
+
});
|
155
|
+
|
156
|
+
assert.deepEqual(times, { f : 1, g : 1, zzz : 3 });
|
157
|
+
};
|
@@ -0,0 +1,39 @@
|
|
1
|
+
{
|
2
|
+
"name" : "detective",
|
3
|
+
"description" : "Find all calls to require() no matter how crazily nested using a proper walk of the AST",
|
4
|
+
"version" : "0.0.4",
|
5
|
+
"repository" : {
|
6
|
+
"type" : "git",
|
7
|
+
"url" : "git://github.com/substack/node-detective.git"
|
8
|
+
},
|
9
|
+
"main" : "index.js",
|
10
|
+
"keywords" : [
|
11
|
+
"require",
|
12
|
+
"source",
|
13
|
+
"analyze",
|
14
|
+
"ast"
|
15
|
+
],
|
16
|
+
"directories" : {
|
17
|
+
"lib" : ".",
|
18
|
+
"example" : "example",
|
19
|
+
"test" : "test"
|
20
|
+
},
|
21
|
+
"scripts" : {
|
22
|
+
"test" : "expresso"
|
23
|
+
},
|
24
|
+
"dependencies" : {
|
25
|
+
"burrito" : "0.2.x"
|
26
|
+
},
|
27
|
+
"devDependencies" : {
|
28
|
+
"expresso" : "=0.7.x"
|
29
|
+
},
|
30
|
+
"engines" : {
|
31
|
+
"node" : ">=0.4.0"
|
32
|
+
},
|
33
|
+
"license" : "MIT",
|
34
|
+
"author" : {
|
35
|
+
"name" : "James Halliday",
|
36
|
+
"email" : "mail@substack.net",
|
37
|
+
"url" : "http://substack.net"
|
38
|
+
}
|
39
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
var assert = require('assert');
|
2
|
+
var detective = require('../');
|
3
|
+
var fs = require('fs');
|
4
|
+
var src = fs.readFileSync(__dirname + '/files/both.js');
|
5
|
+
|
6
|
+
exports.both = function () {
|
7
|
+
var modules = detective.find(src);
|
8
|
+
assert.deepEqual(modules.strings, [ 'a', 'b' ]);
|
9
|
+
assert.deepEqual(modules.expressions, [ '"c"+x', '"d"+y' ]);
|
10
|
+
};
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
if (true) {
|
3
|
+
(function () {
|
4
|
+
require('a');
|
5
|
+
})();
|
6
|
+
}
|
7
|
+
if (false) {
|
8
|
+
(function () {
|
9
|
+
var x = 10;
|
10
|
+
switch (x) {
|
11
|
+
case 1 : require('b'); break;
|
12
|
+
default : break;
|
13
|
+
}
|
14
|
+
})()
|
15
|
+
}
|
16
|
+
|
17
|
+
function qqq () {
|
18
|
+
require
|
19
|
+
(
|
20
|
+
"c"
|
21
|
+
);
|
22
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
var a = require('a');
|
2
|
+
var b = require('b');
|
3
|
+
var c = require('c');
|
4
|
+
var abc = a.b(c);
|
5
|
+
|
6
|
+
var EventEmitter = require('events').EventEmitter;
|
7
|
+
|
8
|
+
var x = require('doom')(5,6,7);
|
9
|
+
x(8,9);
|
10
|
+
c.require('notthis');
|
11
|
+
var y = require('y') * 100;
|
12
|
+
|
13
|
+
var EventEmitter2 = require('events2').EventEmitter();
|
@@ -0,0 +1,13 @@
|
|
1
|
+
var a = load('a');
|
2
|
+
var b = load('b');
|
3
|
+
var c = load('c');
|
4
|
+
var abc = a.b(c);
|
5
|
+
|
6
|
+
var EventEmitter = load('events').EventEmitter;
|
7
|
+
|
8
|
+
var x = load('doom')(5,6,7);
|
9
|
+
x(8,9);
|
10
|
+
c.load('notthis');
|
11
|
+
var y = load('y') * 100;
|
12
|
+
|
13
|
+
var EventEmitter2 = load('events2').EventEmitter();
|