jslint 1.0.5 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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);
|