4
4
*/
5
5
'use strict' ;
6
6
7
- var componentUtil = require ( '../util/component' ) ;
8
- var ComponentList = componentUtil . List ;
7
+ var Components = require ( '../util/Components' ) ;
9
8
10
9
// ------------------------------------------------------------------------------
11
10
// Rule Definition
12
11
// ------------------------------------------------------------------------------
13
12
14
- module . exports = function ( context ) {
13
+ module . exports = Components . detect ( function ( context , components ) {
15
14
16
15
var config = context . options [ 0 ] || { } ;
17
16
var acceptTranspilerName = config . acceptTranspilerName || false ;
18
17
19
- var componentList = new ComponentList ( ) ;
20
-
21
18
var MISSING_MESSAGE = 'Component definition is missing display name' ;
22
- var MISSING_MESSAGE_NAMED_COMP = '{{component}} component definition is missing display name' ;
23
19
24
20
/**
25
21
* Checks if we are declaring a display name
@@ -51,7 +47,7 @@ module.exports = function(context) {
51
47
* @param {ASTNode } node The AST node being checked.
52
48
*/
53
49
function markDisplayNameAsDeclared ( node ) {
54
- componentList . set ( context , node , {
50
+ components . set ( node , {
55
51
hasDisplayName : true
56
52
} ) ;
57
53
}
@@ -63,7 +59,7 @@ module.exports = function(context) {
63
59
function reportMissingDisplayName ( component ) {
64
60
context . report (
65
61
component . node ,
66
- component . name === componentUtil . DEFAULT_COMPONENT_NAME ? MISSING_MESSAGE : MISSING_MESSAGE_NAMED_COMP , {
62
+ MISSING_MESSAGE , {
67
63
component : component . name
68
64
}
69
65
) ;
@@ -135,31 +131,28 @@ module.exports = function(context) {
135
131
if ( ! isDisplayNameDeclaration ( node . property ) ) {
136
132
return ;
137
133
}
138
- var component = componentList . getByName ( context . getSource ( node . object ) ) ;
134
+ var component = context . react . getRelatedComponent ( node ) ;
139
135
if ( ! component ) {
140
136
return ;
141
137
}
142
138
markDisplayNameAsDeclared ( component . node ) ;
143
139
} ,
144
140
145
141
FunctionExpression : function ( node ) {
146
- componentList . set ( context , node ) ;
147
142
if ( ! acceptTranspilerName || ! hasTranspilerName ( node ) ) {
148
143
return ;
149
144
}
150
145
markDisplayNameAsDeclared ( node ) ;
151
146
} ,
152
147
153
148
FunctionDeclaration : function ( node ) {
154
- componentList . set ( context , node ) ;
155
149
if ( ! acceptTranspilerName || ! hasTranspilerName ( node ) ) {
156
150
return ;
157
151
}
158
152
markDisplayNameAsDeclared ( node ) ;
159
153
} ,
160
154
161
155
ArrowFunctionExpression : function ( node ) {
162
- componentList . set ( context , node ) ;
163
156
if ( ! acceptTranspilerName || ! hasTranspilerName ( node ) ) {
164
157
return ;
165
158
}
@@ -174,15 +167,13 @@ module.exports = function(context) {
174
167
} ,
175
168
176
169
ClassDeclaration : function ( node ) {
177
- componentList . set ( context , node ) ;
178
170
if ( ! acceptTranspilerName || ! hasTranspilerName ( node ) ) {
179
171
return ;
180
172
}
181
173
markDisplayNameAsDeclared ( node ) ;
182
174
} ,
183
175
184
176
ObjectExpression : function ( node ) {
185
- componentList . set ( context , node ) ;
186
177
if ( ! acceptTranspilerName || ! hasTranspilerName ( node ) ) {
187
178
// Search for the displayName declaration
188
179
node . properties . forEach ( function ( property ) {
@@ -196,12 +187,8 @@ module.exports = function(context) {
196
187
markDisplayNameAsDeclared ( node ) ;
197
188
} ,
198
189
199
- ReturnStatement : function ( node ) {
200
- componentList . set ( context , node ) ;
201
- } ,
202
-
203
190
'Program:exit' : function ( ) {
204
- var list = componentList . getList ( ) ;
191
+ var list = components . list ( ) ;
205
192
// Report missing display name for all components
206
193
for ( var component in list ) {
207
194
if ( ! list . hasOwnProperty ( component ) || list [ component ] . hasDisplayName ) {
@@ -211,7 +198,7 @@ module.exports = function(context) {
211
198
}
212
199
}
213
200
} ;
214
- } ;
201
+ } ) ;
215
202
216
203
module . exports . schema = [ {
217
204
type : 'object' ,
0 commit comments