5
5
6
6
'use strict' ;
7
7
8
+ var elementType = require ( 'jsx-ast-utils/elementType' ) ;
9
+
8
10
// ------------------------------------------------------------------------------
9
11
// Constants
10
12
// ------------------------------------------------------------------------------
@@ -25,29 +27,22 @@ module.exports = function(context) {
25
27
26
28
return {
27
29
JSXOpeningElement : function ( node ) {
28
- switch ( node . name . type ) {
29
- case 'JSXIdentifier' :
30
- node = node . name ;
31
- break ;
32
- case 'JSXMemberExpression' :
33
- node = node . name . object ;
34
- break ;
35
- case 'JSXNamespacedName' :
36
- node = node . name . namespace ;
37
- break ;
38
- default :
39
- break ;
30
+ var name = elementType ( node ) ;
31
+
32
+ // Get namespace if the type is JSXNamespacedName.
33
+ if ( name . indexOf ( ':' ) > - 1 ) {
34
+ name = name . substring ( 0 , name . indexOf ( ':' ) ) ;
40
35
}
41
36
42
- var isPascalCase = PASCAL_CASE_REGEX . test ( node . name ) ;
43
- var isCompatTag = COMPAT_TAG_REGEX . test ( node . name ) ;
44
- var isAllowedAllCaps = allowAllCaps && ALL_CAPS_TAG_REGEX . test ( node . name ) ;
45
- var isIgnored = ignore . indexOf ( node . name ) !== - 1 ;
37
+ var isPascalCase = PASCAL_CASE_REGEX . test ( name ) ;
38
+ var isCompatTag = COMPAT_TAG_REGEX . test ( name ) ;
39
+ var isAllowedAllCaps = allowAllCaps && ALL_CAPS_TAG_REGEX . test ( name ) ;
40
+ var isIgnored = ignore . indexOf ( name ) !== - 1 ;
46
41
47
42
if ( ! isPascalCase && ! isCompatTag && ! isAllowedAllCaps && ! isIgnored ) {
48
43
context . report ( {
49
44
node : node ,
50
- message : 'Imported JSX component ' + node . name + ' must be in PascalCase'
45
+ message : 'Imported JSX component ' + name + ' must be in PascalCase'
51
46
} ) ;
52
47
}
53
48
}
0 commit comments