This repository was archived by the owner on Mar 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 509
/
Copy pathdisallow-space-before-comma.js
92 lines (83 loc) · 2.08 KB
/
disallow-space-before-comma.js
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/**
* Disallows spaces before commas
*
* Types: `Boolean` or `Object`
*
* Values:
* - `Boolean`: `true` to disallow any spaces before any comma
* - `Object`: `"allExcept"` array of exceptions
* - `"sparseArrays"` to allow spaces in place of absent values in sparse arrays
*
* #### Example
*
* ```js
* "disallowSpaceBeforeComma": true
* ```
* ```js
* "disallowSpaceBeforeComma": {"allExcept": ["sparseArrays"]}
* ```
*
* ##### Valid for mode `true`
*
* ```js
* var a, b;
* ```
*
* ##### Invalid for mode `true`
*
* ```js
* var a ,b;
* ```
* ```js
* [a, b, , , c]
* ```
* ##### Valid for mode `{"allExcept": ["sparseArrays"]}`
*
* ```js
* [a, b, , , c]
* ```
*
* ##### Invalid for mode `{"allExcept": ["sparseArrays"]}`
*
* ```js
* [a , b , , , c]
* ```
*
*/
var assert = require('assert');
module.exports = function() {
};
module.exports.prototype = {
configure: function(options) {
if (typeof options !== 'object') {
assert(
options === true,
this.getOptionName() + ' option requires true value or an object'
);
var _options = {allExcept: []};
return this.configure(_options);
}
assert(
Array.isArray(options.allExcept),
' property `allExcept` in ' + this.getOptionName() + ' should be an array of strings'
);
this._exceptSparseArrays = options.allExcept.indexOf('sparseArrays') >= 0;
},
getOptionName: function() {
return 'disallowSpaceBeforeComma';
},
check: function(file, errors) {
var exceptSparseArrays = this._exceptSparseArrays;
file.iterateTokensByTypeAndValue('Punctuator', ',', function(token) {
var prevToken = token.getPreviousCodeToken();
if (exceptSparseArrays && prevToken.value === ',') {
return;
}
errors.assert.noWhitespaceBetween({
token: prevToken,
nextToken: token,
message: 'Illegal space before comma'
});
});
}
};