jslint 1.0.5 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/jslint +2 -2
- data/jslint.gemspec +37 -39
- data/jslint/jslint.js +6765 -0
- data/jslint/json2.js +36 -38
- data/jslint/node.coffee +69 -0
- data/jslint/node.js +72 -67
- data/jslint/rhino.coffee +59 -0
- data/jslint/rhino.js +69 -53
- data/lib/generators/jslint/update_config/templates/jslint.yml +34 -34
- data/lib/jslint.rb +1 -1
- metadata +61 -59
- data/.gitignore +0 -21
- data/jslint/adsafe.js +0 -1769
- data/jslint/fulljslint.js +0 -5664
- data/jslint/intercept.js +0 -86
data/jslint/json2.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
http://www.JSON.org/json2.js
|
3
|
-
|
3
|
+
2011-02-23
|
4
4
|
|
5
5
|
Public Domain.
|
6
6
|
|
@@ -141,7 +141,7 @@
|
|
141
141
|
redistribute.
|
142
142
|
*/
|
143
143
|
|
144
|
-
/*jslint evil: true, strict: false */
|
144
|
+
/*jslint evil: true, strict: false, regexp: false */
|
145
145
|
|
146
146
|
/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
|
147
147
|
call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
|
@@ -153,11 +153,13 @@
|
|
153
153
|
// Create a JSON object only if one does not already exist. We create the
|
154
154
|
// methods in a closure to avoid creating global variables.
|
155
155
|
|
156
|
-
|
157
|
-
|
156
|
+
var JSON;
|
157
|
+
if (!JSON) {
|
158
|
+
JSON = {};
|
158
159
|
}
|
159
160
|
|
160
161
|
(function () {
|
162
|
+
"use strict";
|
161
163
|
|
162
164
|
function f(n) {
|
163
165
|
// Format integers to have at least two digits.
|
@@ -169,19 +171,19 @@ if (!this.JSON) {
|
|
169
171
|
Date.prototype.toJSON = function (key) {
|
170
172
|
|
171
173
|
return isFinite(this.valueOf()) ?
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
174
|
+
this.getUTCFullYear() + '-' +
|
175
|
+
f(this.getUTCMonth() + 1) + '-' +
|
176
|
+
f(this.getUTCDate()) + 'T' +
|
177
|
+
f(this.getUTCHours()) + ':' +
|
178
|
+
f(this.getUTCMinutes()) + ':' +
|
179
|
+
f(this.getUTCSeconds()) + 'Z' : null;
|
178
180
|
};
|
179
181
|
|
180
|
-
String.prototype.toJSON
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
182
|
+
String.prototype.toJSON =
|
183
|
+
Number.prototype.toJSON =
|
184
|
+
Boolean.prototype.toJSON = function (key) {
|
185
|
+
return this.valueOf();
|
186
|
+
};
|
185
187
|
}
|
186
188
|
|
187
189
|
var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
@@ -207,13 +209,11 @@ if (!this.JSON) {
|
|
207
209
|
// sequences.
|
208
210
|
|
209
211
|
escapable.lastIndex = 0;
|
210
|
-
return escapable.test(string) ?
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
}) + '"' :
|
216
|
-
'"' + string + '"';
|
212
|
+
return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
|
213
|
+
var c = meta[a];
|
214
|
+
return typeof c === 'string' ? c :
|
215
|
+
'\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
216
|
+
}) + '"' : '"' + string + '"';
|
217
217
|
}
|
218
218
|
|
219
219
|
function str(key, holder) {
|
@@ -295,11 +295,9 @@ if (!this.JSON) {
|
|
295
295
|
// Join all of the elements together, separated with commas, and wrap them in
|
296
296
|
// brackets.
|
297
297
|
|
298
|
-
v = partial.length === 0 ? '[]' :
|
299
|
-
gap
|
300
|
-
|
301
|
-
mind + ']' :
|
302
|
-
'[' + partial.join(',') + ']';
|
298
|
+
v = partial.length === 0 ? '[]' : gap ?
|
299
|
+
'[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
|
300
|
+
'[' + partial.join(',') + ']';
|
303
301
|
gap = mind;
|
304
302
|
return v;
|
305
303
|
}
|
@@ -309,8 +307,8 @@ if (!this.JSON) {
|
|
309
307
|
if (rep && typeof rep === 'object') {
|
310
308
|
length = rep.length;
|
311
309
|
for (i = 0; i < length; i += 1) {
|
312
|
-
|
313
|
-
|
310
|
+
if (typeof rep[i] === 'string') {
|
311
|
+
k = rep[i];
|
314
312
|
v = str(k, value);
|
315
313
|
if (v) {
|
316
314
|
partial.push(quote(k) + (gap ? ': ' : ':') + v);
|
@@ -322,7 +320,7 @@ if (!this.JSON) {
|
|
322
320
|
// Otherwise, iterate through all of the keys in the object.
|
323
321
|
|
324
322
|
for (k in value) {
|
325
|
-
if (Object.hasOwnProperty.call(value, k)) {
|
323
|
+
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
326
324
|
v = str(k, value);
|
327
325
|
if (v) {
|
328
326
|
partial.push(quote(k) + (gap ? ': ' : ':') + v);
|
@@ -334,9 +332,9 @@ if (!this.JSON) {
|
|
334
332
|
// Join all of the member texts together, separated with commas,
|
335
333
|
// and wrap them in braces.
|
336
334
|
|
337
|
-
v = partial.length === 0 ? '{}' :
|
338
|
-
|
339
|
-
|
335
|
+
v = partial.length === 0 ? '{}' : gap ?
|
336
|
+
'{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
|
337
|
+
'{' + partial.join(',') + '}';
|
340
338
|
gap = mind;
|
341
339
|
return v;
|
342
340
|
}
|
@@ -377,7 +375,7 @@ if (!this.JSON) {
|
|
377
375
|
rep = replacer;
|
378
376
|
if (replacer && typeof replacer !== 'function' &&
|
379
377
|
(typeof replacer !== 'object' ||
|
380
|
-
|
378
|
+
typeof replacer.length !== 'number')) {
|
381
379
|
throw new Error('JSON.stringify');
|
382
380
|
}
|
383
381
|
|
@@ -406,7 +404,7 @@ if (!this.JSON) {
|
|
406
404
|
var k, v, value = holder[key];
|
407
405
|
if (value && typeof value === 'object') {
|
408
406
|
for (k in value) {
|
409
|
-
if (Object.hasOwnProperty.call(value, k)) {
|
407
|
+
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
410
408
|
v = walk(value, k);
|
411
409
|
if (v !== undefined) {
|
412
410
|
value[k] = v;
|
@@ -446,9 +444,9 @@ if (!this.JSON) {
|
|
446
444
|
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
|
447
445
|
|
448
446
|
if (/^[\],:{}\s]*$/
|
449
|
-
.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
|
450
|
-
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
451
|
-
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
447
|
+
.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
|
448
|
+
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
449
|
+
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
452
450
|
|
453
451
|
// In the third stage we use the eval function to compile the text into a
|
454
452
|
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
|
data/jslint/node.coffee
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
###
|
2
|
+
(c) 2010 Geraud Boyer
|
3
|
+
Adapted from rhino.js from Douglas Crockford (www.JSLint.com)
|
4
|
+
|
5
|
+
This is the node companion to fulljslint.js.
|
6
|
+
###
|
7
|
+
###global JSLINT
|
8
|
+
###
|
9
|
+
###jslint rhino: false, node: true, strict: false
|
10
|
+
###
|
11
|
+
###global require,sys,__filename,process
|
12
|
+
###
|
13
|
+
|
14
|
+
((args) ->
|
15
|
+
sys = require 'sys'
|
16
|
+
fs = require 'fs'
|
17
|
+
path = require 'path'
|
18
|
+
|
19
|
+
print_syntax = () ->
|
20
|
+
sys.puts 'Usage: jslint.js [options] file.js'
|
21
|
+
process.exit 1
|
22
|
+
|
23
|
+
print_syntax() if args.length is 0
|
24
|
+
|
25
|
+
filename = path.join path.dirname(__filename), 'jslint.js'
|
26
|
+
JSLINT = fs.readFileSync(filename).toString 'UTF8'
|
27
|
+
eval JSLINT
|
28
|
+
|
29
|
+
# Sensible defaults
|
30
|
+
options =
|
31
|
+
rhino: no, node: no, passfail: no, bitwise: yes, immed: yes, newcap: yes,
|
32
|
+
nomen: yes, onevar: yes, plusplus: yes, regexp: yes, undef: yes, white: yes
|
33
|
+
|
34
|
+
input = null
|
35
|
+
input_filename = null
|
36
|
+
args.forEach (arg, index) ->
|
37
|
+
|
38
|
+
if arg.match /^--no-(\w+)$/
|
39
|
+
options[RegExp.$1] = no
|
40
|
+
else if arg.match /^--(\w+)=(\S.*)$/
|
41
|
+
options[RegExp.$1] = JSON.parse(RegExp.$2)
|
42
|
+
else if arg.match /^--(\w+)$/
|
43
|
+
options[RegExp.$1] = yes
|
44
|
+
else
|
45
|
+
input_filename = arg
|
46
|
+
input = fs.readFileSync input_filename
|
47
|
+
if not input
|
48
|
+
sys.puts "jslint: Couldn't open file '#{input_filename}'."
|
49
|
+
process.exit 1
|
50
|
+
else
|
51
|
+
# sys.debug('opening input');
|
52
|
+
input = input.toString 'UTF8'
|
53
|
+
return
|
54
|
+
|
55
|
+
print_syntax() if not input
|
56
|
+
|
57
|
+
if not JSLINT input, options
|
58
|
+
JSLINT.errors.forEach (error) ->
|
59
|
+
if error
|
60
|
+
sys.puts "Lint at line #{error.line} character #{error.character}: #{error.reason}"
|
61
|
+
sys.puts (error.evidence or '').replace /^\s*(\S*(\s+\S+)*)\s*$/, "$1"
|
62
|
+
sys.puts ''
|
63
|
+
process.exit 2
|
64
|
+
else
|
65
|
+
sys.puts "jslint: No problems found in #{input_filename}"
|
66
|
+
process.exit 0
|
67
|
+
|
68
|
+
return
|
69
|
+
) process.ARGV.slice 2
|
data/jslint/node.js
CHANGED
@@ -1,72 +1,77 @@
|
|
1
1
|
/*
|
2
|
-
|
3
|
-
|
4
|
-
*/
|
5
|
-
// This is the node companion to fulljslint.js.
|
6
|
-
|
7
|
-
/*global JSLINT */
|
8
|
-
/*jslint rhino: false, strict: false */
|
9
|
-
/*global require,sys,__filename,process */
|
10
|
-
|
11
|
-
(function (args) {
|
12
|
-
var sys = require('sys'),
|
13
|
-
fs = require('fs'),
|
14
|
-
path = require('path'),
|
15
|
-
JSLINT = fs.readFileSync(path.join(path.dirname(__filename), 'fulljslint.js')).toString('UTF8'),
|
16
|
-
options = {
|
17
|
-
rhino: true, passfail: false, bitwise: true,
|
18
|
-
eqeqeq: true, immed: true, newcap: true,
|
19
|
-
nomen: true, onevar: true, plusplus: true,
|
20
|
-
regexp: true, undef: true, white: true
|
21
|
-
},
|
22
|
-
filename, input;
|
2
|
+
(c) 2010 Geraud Boyer
|
3
|
+
Adapted from rhino.js from Douglas Crockford (www.JSLint.com)
|
23
4
|
|
24
|
-
|
25
|
-
|
5
|
+
This is the node companion to fulljslint.js.
|
6
|
+
*/
|
7
|
+
/*global JSLINT
|
8
|
+
*/
|
9
|
+
/*jslint rhino: false, node: true, strict: false
|
10
|
+
*/
|
11
|
+
/*global require,sys,__filename,process
|
12
|
+
*/(function(args) {
|
13
|
+
var JSLINT, filename, fs, input, input_filename, options, path, print_syntax, sys;
|
14
|
+
sys = require('sys');
|
15
|
+
fs = require('fs');
|
16
|
+
path = require('path');
|
17
|
+
print_syntax = function() {
|
18
|
+
sys.puts('Usage: jslint.js [options] file.js');
|
19
|
+
return process.exit(1);
|
20
|
+
};
|
21
|
+
if (args.length === 0) {
|
22
|
+
print_syntax();
|
23
|
+
}
|
24
|
+
filename = path.join(path.dirname(__filename), 'jslint.js');
|
25
|
+
JSLINT = fs.readFileSync(filename).toString('UTF8');
|
26
|
+
eval(JSLINT);
|
27
|
+
options = {
|
28
|
+
rhino: false,
|
29
|
+
node: false,
|
30
|
+
passfail: false,
|
31
|
+
bitwise: true,
|
32
|
+
immed: true,
|
33
|
+
newcap: true,
|
34
|
+
nomen: true,
|
35
|
+
onevar: true,
|
36
|
+
plusplus: true,
|
37
|
+
regexp: true,
|
38
|
+
undef: true,
|
39
|
+
white: true
|
40
|
+
};
|
41
|
+
input = null;
|
42
|
+
input_filename = null;
|
43
|
+
args.forEach(function(arg, index) {
|
44
|
+
if (arg.match(/^--no-(\w+)$/)) {
|
45
|
+
options[RegExp.$1] = false;
|
46
|
+
} else if (arg.match(/^--(\w+)=(\S.*)$/)) {
|
47
|
+
options[RegExp.$1] = JSON.parse(RegExp.$2);
|
48
|
+
} else if (arg.match(/^--(\w+)$/)) {
|
49
|
+
options[RegExp.$1] = true;
|
50
|
+
} else {
|
51
|
+
input_filename = arg;
|
52
|
+
input = fs.readFileSync(input_filename);
|
53
|
+
if (!input) {
|
54
|
+
sys.puts("jslint: Couldn't open file '" + input_filename + "'.");
|
26
55
|
process.exit(1);
|
56
|
+
} else {
|
57
|
+
input = input.toString('UTF8');
|
58
|
+
}
|
27
59
|
}
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
options[RegExp.$1] = JSON.parse(RegExp.$2);
|
40
|
-
}
|
41
|
-
else if (arg.match(/^--(\w+)$/)) {
|
42
|
-
// sys.debug("a=true");
|
43
|
-
options[RegExp.$1] = true;
|
44
|
-
}
|
45
|
-
else {
|
46
|
-
filename = arg;
|
47
|
-
input = fs.readFileSync(filename);
|
48
|
-
if (!input) {
|
49
|
-
sys.puts("jslint: Couldn't open file '" + filename + "'.");
|
50
|
-
process.exit(1);
|
51
|
-
}
|
52
|
-
else {
|
53
|
-
// sys.debug('opening input');
|
54
|
-
input = input.toString('UTF8');
|
55
|
-
}
|
56
|
-
}
|
60
|
+
});
|
61
|
+
if (!input) {
|
62
|
+
print_syntax();
|
63
|
+
}
|
64
|
+
if (!JSLINT(input, options)) {
|
65
|
+
JSLINT.errors.forEach(function(error) {
|
66
|
+
if (error) {
|
67
|
+
sys.puts("Lint at line " + error.line + " character " + error.character + ": " + error.reason);
|
68
|
+
sys.puts((error.evidence || '').replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
|
69
|
+
return sys.puts('');
|
70
|
+
}
|
57
71
|
});
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
}
|
65
|
-
});
|
66
|
-
process.exit(2);
|
67
|
-
}
|
68
|
-
else {
|
69
|
-
sys.puts("jslint: No problems found in " + filename);
|
70
|
-
process.exit(0);
|
71
|
-
}
|
72
|
-
}(process.ARGV.slice(2)));
|
72
|
+
process.exit(2);
|
73
|
+
} else {
|
74
|
+
sys.puts("jslint: No problems found in " + input_filename);
|
75
|
+
process.exit(0);
|
76
|
+
}
|
77
|
+
})(process.ARGV.slice(2));
|
data/jslint/rhino.coffee
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
###
|
2
|
+
rhino.js
|
3
|
+
2009-09-11
|
4
|
+
Copyright (c) 2002 Douglas Crockford (www.JSLint.com) Rhino Edition
|
5
|
+
|
6
|
+
Converted to CoffeeScript by Geraud Boyer
|
7
|
+
|
8
|
+
This is the Rhino companion to fulljslint.js.
|
9
|
+
|
10
|
+
###
|
11
|
+
|
12
|
+
###global JSLINT
|
13
|
+
###
|
14
|
+
###jslint rhino: true, strict: false
|
15
|
+
###
|
16
|
+
#
|
17
|
+
do (arguments) ->
|
18
|
+
|
19
|
+
print_syntax = () ->
|
20
|
+
sys.puts 'Usage: jslint.js [options] file.js'
|
21
|
+
quit 1
|
22
|
+
|
23
|
+
print_syntax() if not arguments[0]
|
24
|
+
|
25
|
+
options =
|
26
|
+
rhino: no, node: no, passfail: no, strict: no, bitwise: yes, newcap: yes,
|
27
|
+
nomen: yes, onevar: yes, plusplus: yes, regexp: yes, undef: yes, white: yes
|
28
|
+
|
29
|
+
input = null
|
30
|
+
input_filename = null
|
31
|
+
|
32
|
+
for arg in arguments
|
33
|
+
do (arg)->
|
34
|
+
if arg.match /^--no-(\w+)$/
|
35
|
+
options[RegExp.$1] = no
|
36
|
+
else if arg.match /^--(\w+)=(\S.*)$/
|
37
|
+
options[RegExp.$1] = JSON.parse RegExp.$2
|
38
|
+
else if arg.match /^--(\w+)$/
|
39
|
+
options[RegExp.$1] = yes
|
40
|
+
else
|
41
|
+
input_filename = arg
|
42
|
+
input = readFile input_filename
|
43
|
+
if not input
|
44
|
+
print "jslint: Couldn't open file '#{input_filename}'."
|
45
|
+
quit 1
|
46
|
+
return
|
47
|
+
|
48
|
+
print_syntax() if not input
|
49
|
+
|
50
|
+
if not JSLINT input, options
|
51
|
+
JSLINT.errors.forEach (error) ->
|
52
|
+
if error
|
53
|
+
print "Lint at line #{error.line} character #{error.character}: #{error.reason}"
|
54
|
+
print (error.evidence or '').replace /^\s*(\S*(\s+\S+)*)\s*$/, "$1"
|
55
|
+
print ''
|
56
|
+
quit 2
|
57
|
+
else
|
58
|
+
print "jslint: No problems found in #{input_filename}"
|
59
|
+
quit 0
|
data/jslint/rhino.js
CHANGED
@@ -1,59 +1,75 @@
|
|
1
|
-
// rhino.js
|
2
|
-
// 2009-09-11
|
3
1
|
/*
|
4
|
-
|
5
|
-
|
2
|
+
rhino.js
|
3
|
+
2009-09-11
|
4
|
+
Copyright (c) 2002 Douglas Crockford (www.JSLint.com) Rhino Edition
|
6
5
|
|
7
|
-
|
6
|
+
Converted to CoffeeScript by Geraud Boyer
|
8
7
|
|
9
|
-
|
10
|
-
/*jslint rhino: true, strict: false */
|
8
|
+
This is the Rhino companion to fulljslint.js.
|
11
9
|
|
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
|
-
e.character + ': ' + e.reason);
|
49
|
-
print((e.evidence || '').
|
50
|
-
replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
|
51
|
-
print('');
|
52
|
-
}
|
53
|
-
}
|
54
|
-
quit(2);
|
10
|
+
*/
|
11
|
+
/*global JSLINT
|
12
|
+
*/
|
13
|
+
/*jslint rhino: true, strict: false
|
14
|
+
*/(function(arguments) {
|
15
|
+
var arg, input, input_filename, options, print_syntax, _fn, _i, _len;
|
16
|
+
print_syntax = function() {
|
17
|
+
sys.puts('Usage: jslint.js [options] file.js');
|
18
|
+
return quit(1);
|
19
|
+
};
|
20
|
+
if (!arguments[0]) {
|
21
|
+
print_syntax();
|
22
|
+
}
|
23
|
+
options = {
|
24
|
+
rhino: false,
|
25
|
+
node: false,
|
26
|
+
passfail: false,
|
27
|
+
strict: false,
|
28
|
+
bitwise: true,
|
29
|
+
newcap: true,
|
30
|
+
nomen: true,
|
31
|
+
onevar: true,
|
32
|
+
plusplus: true,
|
33
|
+
regexp: true,
|
34
|
+
undef: true,
|
35
|
+
white: true
|
36
|
+
};
|
37
|
+
input = null;
|
38
|
+
input_filename = null;
|
39
|
+
_fn = function(arg) {
|
40
|
+
if (arg.match(/^--no-(\w+)$/)) {
|
41
|
+
options[RegExp.$1] = false;
|
42
|
+
} else if (arg.match(/^--(\w+)=(\S.*)$/)) {
|
43
|
+
options[RegExp.$1] = JSON.parse(RegExp.$2);
|
44
|
+
} else if (arg.match(/^--(\w+)$/)) {
|
45
|
+
options[RegExp.$1] = true;
|
55
46
|
} else {
|
56
|
-
|
57
|
-
|
47
|
+
input_filename = arg;
|
48
|
+
input = readFile(input_filename);
|
49
|
+
if (!input) {
|
50
|
+
print("jslint: Couldn't open file '" + input_filename + "'.");
|
51
|
+
quit(1);
|
52
|
+
}
|
58
53
|
}
|
59
|
-
}
|
54
|
+
};
|
55
|
+
for (_i = 0, _len = arguments.length; _i < _len; _i++) {
|
56
|
+
arg = arguments[_i];
|
57
|
+
_fn(arg);
|
58
|
+
}
|
59
|
+
if (!input) {
|
60
|
+
print_syntax();
|
61
|
+
}
|
62
|
+
if (!JSLINT(input, options)) {
|
63
|
+
JSLINT.errors.forEach(function(error) {
|
64
|
+
if (error) {
|
65
|
+
print("Lint at line " + error.line + " character " + error.character + ": " + error.reason);
|
66
|
+
print((error.evidence || '').replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
|
67
|
+
return print('');
|
68
|
+
}
|
69
|
+
});
|
70
|
+
return quit(2);
|
71
|
+
} else {
|
72
|
+
print("jslint: No problems found in " + input_filename);
|
73
|
+
return quit(0);
|
74
|
+
}
|
75
|
+
})(arguments);
|