55
66'use strict' ;
77
8+ var elementType = require ( 'jsx-ast-utils/elementType' ) ;
9+
810// ------------------------------------------------------------------------------
911// Constants
1012// ------------------------------------------------------------------------------
@@ -25,29 +27,22 @@ module.exports = function(context) {
2527
2628 return {
2729 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 ( ':' ) ) ;
4035 }
4136
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 ;
4641
4742 if ( ! isPascalCase && ! isCompatTag && ! isAllowedAllCaps && ! isIgnored ) {
4843 context . report ( {
4944 node : node ,
50- message : 'Imported JSX component ' + node . name + ' must be in PascalCase'
45+ message : 'Imported JSX component ' + name + ' must be in PascalCase'
5146 } ) ;
5247 }
5348 }
0 commit comments