jslintrb 0.5.0 → 0.6.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/.jslintrbrc +1 -0
- data/CHANGELOG.rdoc +4 -0
- data/Manifest.txt +2 -0
- data/README.rdoc +7 -0
- data/Wakefile +3 -0
- data/lib/jslintrb.rb +1 -1
- data/lib/jslintrb/fulljslint.js +1 -0
- data/lib/jslintrb/jslintrb.js +70 -15
- metadata +5 -3
data/.jslintrbrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"gettersetter": true}
|
data/CHANGELOG.rdoc
CHANGED
data/Manifest.txt
CHANGED
data/README.rdoc
CHANGED
@@ -29,6 +29,13 @@ example at http://github.com/smparkes/env-js/blob/envjsrb/.jslintrbrc.
|
|
29
29
|
|
30
30
|
JSLint warns against using new to be evaluated soley for side-effects. jslintrb allows this if you set the "newside" option.
|
31
31
|
|
32
|
+
Upstream doesn't support ECMAScript 5 getters and setters. Nick
|
33
|
+
Galbreath (http://blog.client9.com/) had the idea of just using a
|
34
|
+
regexp to mangle the common cases for the purposes of jslint until
|
35
|
+
upstream suports them. You can do this now in jslintrb by setting the
|
36
|
+
"gettersetter" option to true. Note that this option has to be turned
|
37
|
+
on in a .jslintrbrc file; it can't be turned on with inline comments.
|
38
|
+
|
32
39
|
== Copyright
|
33
40
|
|
34
41
|
jslintrb copyright (c) 2010 Steven Parkes. See LICENSE for details.
|
data/Wakefile
ADDED
data/lib/jslintrb.rb
CHANGED
data/lib/jslintrb/fulljslint.js
CHANGED
data/lib/jslintrb/jslintrb.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*global Ruby, JSLINT */
|
2
2
|
/*jslint
|
3
3
|
evil: true, nomen: false, onevar: false, regexp: false, strict: true, indent: 2
|
4
|
-
plusplus: false
|
4
|
+
plusplus: false, white: false, gettersetter: true
|
5
5
|
*/
|
6
6
|
|
7
7
|
"use strict";
|
@@ -25,64 +25,98 @@
|
|
25
25
|
|
26
26
|
var errors = 0;
|
27
27
|
|
28
|
+
var gettersetter_error = function(file, line_number, reason, line) {
|
29
|
+
Ruby.print(file + ' line ' + line_number + ' character 0: ' + reason + '\n');
|
30
|
+
Ruby.print(line+"\n");
|
31
|
+
Ruby.send("eval", "$stdout.flush");
|
32
|
+
Ruby.send("eval", "$stderr.flush");
|
33
|
+
};
|
34
|
+
|
28
35
|
var files = Ruby.send("eval", "ENV['JSLINT_FILES']");
|
29
36
|
files = files.split(":");
|
30
37
|
for (var i = 0; i < files.length; i++) {
|
31
38
|
var file = files[i];
|
32
39
|
|
33
40
|
var batches = [];
|
34
|
-
batches.push(
|
41
|
+
batches.push(default_options);
|
35
42
|
|
36
43
|
var dirs = file.split("/");
|
37
44
|
|
38
45
|
var list = [ ".jslintrbrc" ];
|
39
|
-
var d;
|
40
|
-
|
41
|
-
list.push(dirs.slice(0,d).join("/")+"/.jslintrbrc");
|
46
|
+
for (var d = 1; d < dirs.length; d++) {
|
47
|
+
list.push(dirs.slice(0, d).join("/") + "/.jslintrbrc");
|
42
48
|
}
|
43
49
|
|
44
50
|
var rc;
|
45
|
-
for(d=0; d<list.length; d++){
|
51
|
+
for (d = 0; d < list.length; d++) {
|
46
52
|
var opts;
|
47
53
|
try {
|
48
54
|
opts = Ruby.IO.read(list[d]);
|
49
|
-
} catch (
|
55
|
+
} catch (ex0) {
|
50
56
|
opts = undefined;
|
51
57
|
}
|
52
58
|
|
53
59
|
if (opts) {
|
54
60
|
try {
|
55
61
|
opts = JSON.parse(opts);
|
62
|
+
|
56
63
|
batches.push(opts);
|
57
|
-
} catch(
|
58
|
-
throw new Error("could not parse "+list[d]+" as JSON");
|
64
|
+
} catch (ex1) {
|
65
|
+
throw new Error("could not parse " + list[d] + " as JSON");
|
59
66
|
}
|
60
67
|
}
|
61
68
|
}
|
62
69
|
var options = {};
|
63
70
|
var b;
|
64
|
-
for (b=0; b<batches.length; b++) {
|
71
|
+
for (b = 0; b < batches.length; b++) {
|
65
72
|
var key;
|
66
|
-
for(key in batches[b]) {
|
73
|
+
for (key in batches[b]) {
|
67
74
|
options[key] = batches[b][key];
|
68
75
|
}
|
69
76
|
}
|
70
77
|
|
71
78
|
var contents = Ruby.IO.read(file);
|
79
|
+
var regex = /(.*)\s+(get|set)\s+(\w+)\s*\(([^)]*)\)(.*)/;
|
80
|
+
var se = Ruby.send("eval", "$stderr");
|
81
|
+
|
82
|
+
if (options.gettersetter) {
|
83
|
+
contents = contents.split("\n");
|
84
|
+
for (var l = 0; l < contents.length; l++ ) {
|
85
|
+
var line = contents[l];
|
86
|
+
var match = line.match(regex);
|
87
|
+
if (match) {
|
88
|
+
if (match[2] === "get") {
|
89
|
+
if ( !match[4].match(/^\s*$/) ) {
|
90
|
+
gettersetter_error(file, l, "getter has an argument: "+match[4], line);
|
91
|
+
}
|
92
|
+
} else if (match[2] === "set") {
|
93
|
+
if ( match[4].match(/^\s*$/) ) {
|
94
|
+
gettersetter_error(file, l, "setter has no argument");
|
95
|
+
}
|
96
|
+
if ( match[4].match(/,/) ) {
|
97
|
+
gettersetter_error(file, l, "setter has multiple arguments: "+match[4]);
|
98
|
+
}
|
99
|
+
}
|
100
|
+
contents[l] = [ match[1], match[2], "_", match[3], ": function (", match[4], ")", match[5] ].join("");
|
101
|
+
|
102
|
+
}
|
103
|
+
}
|
104
|
+
contents = contents.join("\n");
|
105
|
+
}
|
106
|
+
|
72
107
|
var success = JSLINT(contents, options);
|
73
108
|
if (success) {
|
74
109
|
} else {
|
75
110
|
errors += JSLINT.errors.length;
|
76
|
-
for (j = 0; j < JSLINT.errors.length; j += 1) {
|
111
|
+
for (var j = 0; j < JSLINT.errors.length; j += 1) {
|
77
112
|
var e = JSLINT.errors[j];
|
78
113
|
if (e) {
|
79
|
-
|
80
114
|
Ruby.print(file + ' line ' + e.line + ' character ' +
|
81
115
|
e.character + ': ' + e.reason + '\n');
|
82
116
|
Ruby.print((e.evidence || '').
|
83
117
|
replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1") + '\n');
|
84
|
-
Ruby.send("eval","$stdout.flush");
|
85
|
-
Ruby.send("eval","$stderr.flush");
|
118
|
+
Ruby.send("eval", "$stdout.flush");
|
119
|
+
Ruby.send("eval", "$stderr.flush");
|
86
120
|
}
|
87
121
|
}
|
88
122
|
}
|
@@ -93,3 +127,24 @@
|
|
93
127
|
}
|
94
128
|
|
95
129
|
}());
|
130
|
+
|
131
|
+
/* What the heck, a test getter/setter: self testing code? */
|
132
|
+
var x = {
|
133
|
+
get a() {
|
134
|
+
return 10;
|
135
|
+
},
|
136
|
+
/*
|
137
|
+
g_et b(x) {
|
138
|
+
return 10;
|
139
|
+
},
|
140
|
+
s_et d(y, z) {
|
141
|
+
return 10;
|
142
|
+
},
|
143
|
+
s_et e() {
|
144
|
+
return 10;
|
145
|
+
},
|
146
|
+
*/
|
147
|
+
set c(y) {
|
148
|
+
return 10;
|
149
|
+
}
|
150
|
+
};
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 6
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.6.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Steven Parkes
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-30 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -73,11 +73,13 @@ extensions: []
|
|
73
73
|
extra_rdoc_files:
|
74
74
|
- Manifest.txt
|
75
75
|
files:
|
76
|
+
- .jslintrbrc
|
76
77
|
- CHANGELOG.rdoc
|
77
78
|
- LICENSE
|
78
79
|
- Manifest.txt
|
79
80
|
- README.rdoc
|
80
81
|
- Rakefile
|
82
|
+
- Wakefile
|
81
83
|
- bin/jslintrb
|
82
84
|
- lib/jslintrb.rb
|
83
85
|
- lib/jslintrb/fulljslint.js
|