1
1
/**
2
2
* @fileoverview Enforce or disallow spaces inside of curly braces in JSX attributes.
3
- * @author Jamund Ferguson, Brandyn Bennett, Michael Ficarra, Vignesh Anand, Jamund Ferguson, Yannick Croissant
3
+ * @author Jamund Ferguson
4
+ * @author Brandyn Bennett
5
+ * @author Michael Ficarra
6
+ * @author Vignesh Anand
7
+ * @author Jamund Ferguson
8
+ * @author Yannick Croissant
9
+ * @author Erik Wendel
4
10
*/
5
11
'use strict' ;
6
12
@@ -43,8 +49,15 @@ module.exports = function(context) {
43
49
* @returns {void }
44
50
*/
45
51
function reportNoBeginningNewline ( node , token ) {
46
- context . report ( node , token . loc . start ,
47
- 'There should be no newline after \'' + token . value + '\'' ) ;
52
+ context . report ( {
53
+ node : node ,
54
+ loc : token . loc . start ,
55
+ message : 'There should be no newline after \'' + token . value + '\'' ,
56
+ fix : function ( fixer ) {
57
+ var nextToken = context . getSourceCode ( ) . getTokenAfter ( token ) ;
58
+ return fixer . replaceTextRange ( [ token . range [ 1 ] , nextToken . range [ 0 ] ] , spaced ? ' ' : '' ) ;
59
+ }
60
+ } ) ;
48
61
}
49
62
50
63
/**
@@ -54,8 +67,15 @@ module.exports = function(context) {
54
67
* @returns {void }
55
68
*/
56
69
function reportNoEndingNewline ( node , token ) {
57
- context . report ( node , token . loc . start ,
58
- 'There should be no newline before \'' + token . value + '\'' ) ;
70
+ context . report ( {
71
+ node : node ,
72
+ loc : token . loc . start ,
73
+ message : 'There should be no newline before \'' + token . value + '\'' ,
74
+ fix : function ( fixer ) {
75
+ var previousToken = context . getSourceCode ( ) . getTokenBefore ( token ) ;
76
+ return fixer . replaceTextRange ( [ previousToken . range [ 1 ] , token . range [ 0 ] ] , spaced ? ' ' : '' ) ;
77
+ }
78
+ } ) ;
59
79
}
60
80
61
81
/**
@@ -65,8 +85,15 @@ module.exports = function(context) {
65
85
* @returns {void }
66
86
*/
67
87
function reportNoBeginningSpace ( node , token ) {
68
- context . report ( node , token . loc . start ,
69
- 'There should be no space after \'' + token . value + '\'' ) ;
88
+ context . report ( {
89
+ node : node ,
90
+ loc : token . loc . start ,
91
+ message : 'There should be no space after \'' + token . value + '\'' ,
92
+ fix : function ( fixer ) {
93
+ var nextToken = context . getSourceCode ( ) . getTokenAfter ( token ) ;
94
+ return fixer . removeRange ( [ token . range [ 1 ] , nextToken . range [ 0 ] ] ) ;
95
+ }
96
+ } ) ;
70
97
}
71
98
72
99
/**
@@ -76,8 +103,15 @@ module.exports = function(context) {
76
103
* @returns {void }
77
104
*/
78
105
function reportNoEndingSpace ( node , token ) {
79
- context . report ( node , token . loc . start ,
80
- 'There should be no space before \'' + token . value + '\'' ) ;
106
+ context . report ( {
107
+ node : node ,
108
+ loc : token . loc . start ,
109
+ message : 'There should be no space before \'' + token . value + '\'' ,
110
+ fix : function ( fixer ) {
111
+ var previousToken = context . getSourceCode ( ) . getTokenBefore ( token ) ;
112
+ return fixer . removeRange ( [ previousToken . range [ 1 ] , token . range [ 0 ] ] ) ;
113
+ }
114
+ } ) ;
81
115
}
82
116
83
117
/**
@@ -87,8 +121,14 @@ module.exports = function(context) {
87
121
* @returns {void }
88
122
*/
89
123
function reportRequiredBeginningSpace ( node , token ) {
90
- context . report ( node , token . loc . start ,
91
- 'A space is required after \'' + token . value + '\'' ) ;
124
+ context . report ( {
125
+ node : node ,
126
+ loc : token . loc . start ,
127
+ message : 'A space is required after \'' + token . value + '\'' ,
128
+ fix : function ( fixer ) {
129
+ return fixer . insertTextAfter ( token , ' ' ) ;
130
+ }
131
+ } ) ;
92
132
}
93
133
94
134
/**
@@ -98,8 +138,14 @@ module.exports = function(context) {
98
138
* @returns {void }
99
139
*/
100
140
function reportRequiredEndingSpace ( node , token ) {
101
- context . report ( node , token . loc . start ,
102
- 'A space is required before \'' + token . value + '\'' ) ;
141
+ context . report ( {
142
+ node : node ,
143
+ loc : token . loc . start ,
144
+ message : 'A space is required before \'' + token . value + '\'' ,
145
+ fix : function ( fixer ) {
146
+ return fixer . insertTextBefore ( token , ' ' ) ;
147
+ }
148
+ } ) ;
103
149
}
104
150
105
151
/**
0 commit comments