@@ -19,6 +19,7 @@ module.exports = function(context) {
19
19
var sourceCode = context . getSourceCode ( ) ;
20
20
var spaced = context . options [ 0 ] === 'always' ;
21
21
var multiline = context . options [ 1 ] ? context . options [ 1 ] . allowMultiline : true ;
22
+ var alternative = context . options [ 1 ] ? context . options [ 1 ] . alternative : false ;
22
23
23
24
// --------------------------------------------------------------------------
24
25
// Helpers
@@ -149,18 +150,43 @@ module.exports = function(context) {
149
150
* @param {Token } last The last token to check (should be closing brace)
150
151
* @returns {void }
151
152
*/
152
- function validateBraceSpacing ( node , first , second , penultimate , last ) {
153
+ function validateBraceSpacing ( node , first , second , third , antepenultimate , penultimate , last ) {
153
154
if ( spaced ) {
154
- if ( ! sourceCode . isSpaceBetweenTokens ( first , second ) ) {
155
- reportRequiredBeginningSpace ( node , first ) ;
156
- } else if ( ! multiline && isMultiline ( first , second ) ) {
157
- reportNoBeginningNewline ( node , first ) ;
158
- }
159
-
160
- if ( ! sourceCode . isSpaceBetweenTokens ( penultimate , last ) ) {
161
- reportRequiredEndingSpace ( node , last ) ;
162
- } else if ( ! multiline && isMultiline ( penultimate , last ) ) {
163
- reportNoEndingNewline ( node , last ) ;
155
+ if ( ! alternative ) {
156
+ if ( ! sourceCode . isSpaceBetweenTokens ( first , second ) ) {
157
+ reportRequiredBeginningSpace ( node , first ) ;
158
+ } else if ( ! multiline && isMultiline ( first , second ) ) {
159
+ reportNoBeginningNewline ( node , first ) ;
160
+ }
161
+
162
+ if ( ! sourceCode . isSpaceBetweenTokens ( penultimate , last ) ) {
163
+ reportRequiredEndingSpace ( node , last ) ;
164
+ } else if ( ! multiline && isMultiline ( penultimate , last ) ) {
165
+ reportNoEndingNewline ( node , last ) ;
166
+ }
167
+
168
+ // Object literal
169
+ } else if ( first . value === second . value ) {
170
+ if ( sourceCode . isSpaceBetweenTokens ( first , second ) ) {
171
+ reportNoBeginningSpace ( node , first ) ;
172
+ }
173
+ if ( sourceCode . isSpaceBetweenTokens ( penultimate , last ) ) {
174
+ reportNoEndingSpace ( node , last ) ;
175
+ }
176
+ if ( ! sourceCode . isSpaceBetweenTokens ( second , third ) ) {
177
+ reportRequiredBeginningSpace ( node , second ) ;
178
+ }
179
+ if ( ! sourceCode . isSpaceBetweenTokens ( antepenultimate , penultimate ) ) {
180
+ reportRequiredEndingSpace ( node , penultimate ) ;
181
+ }
182
+
183
+ } else {
184
+ if ( ! sourceCode . isSpaceBetweenTokens ( first , second ) ) {
185
+ reportRequiredBeginningSpace ( node , first ) ;
186
+ }
187
+ if ( ! sourceCode . isSpaceBetweenTokens ( penultimate , last ) ) {
188
+ reportRequiredEndingSpace ( node , last ) ;
189
+ }
164
190
}
165
191
166
192
return ;
@@ -186,8 +212,10 @@ module.exports = function(context) {
186
212
var last = sourceCode . getLastToken ( node ) ;
187
213
var second = context . getTokenAfter ( first ) ;
188
214
var penultimate = sourceCode . getTokenBefore ( last ) ;
215
+ var third = context . getTokenAfter ( second ) ;
216
+ var antepenultimate = sourceCode . getTokenBefore ( penultimate ) ;
189
217
190
- validateBraceSpacing ( node , first , second , penultimate , last ) ;
218
+ validateBraceSpacing ( node , first , second , third , antepenultimate , penultimate , last ) ;
191
219
}
192
220
} ;
193
221
} ;
@@ -199,6 +227,9 @@ module.exports.schema = [{
199
227
properties : {
200
228
allowMultiline : {
201
229
type : 'boolean'
230
+ } ,
231
+ alternative : {
232
+ type : 'boolean'
202
233
}
203
234
} ,
204
235
additionalProperties : false
0 commit comments