Skip to content

Commit 1bd8c89

Browse files
committed
Merge pull request #333 from lencioni/pascal-caps
Allow consecutive uppercase letters in jsx-pascal-case (fixes #328)
2 parents 2b3c8c0 + c5b67d4 commit 1bd8c89

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

docs/rules/jsx-pascal-case.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ The following patterns are considered warnings:
2020
<test_component />
2121
```
2222

23+
```js
24+
<YELLING />
25+
```
26+
2327
The following patterns are not considered warnings:
2428

2529
```js
@@ -32,6 +36,10 @@ The following patterns are not considered warnings:
3236
</TestComponent>
3337
```
3438

39+
```js
40+
<CSSTransitionGroup />
41+
```
42+
3543
## When Not To Use It
3644

37-
If you are not using JSX.
45+
If you are not using JSX.

lib/rules/jsx-pascal-case.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ var variableUtil = require('../util/variable');
1111
// Constants
1212
// ------------------------------------------------------------------------------
1313

14-
var PASCAL_CASE_REGEX = /^[A-Z][a-z]+(?:[A-Z][a-z]+)*$/;
14+
var PASCAL_CASE_REGEX = /^[A-Z]+[a-z]+(?:[A-Z]+[a-z]*)*$/;
1515

1616
// ------------------------------------------------------------------------------
1717
// Rule Definition

tests/lib/rules/jsx-pascal-case.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,22 @@ ruleTester.run('jsx-pascal-case', rule, {
2525
ecmaFeatures: {
2626
jsx: true
2727
}
28+
}, {
29+
code: [
30+
'var CSSTransitionGroup;',
31+
'<CSSTransitionGroup />'
32+
].join('\n'),
33+
ecmaFeatures: {
34+
jsx: true
35+
}
36+
}, {
37+
code: [
38+
'var BetterThanCSS;',
39+
'<BetterThanCSS />'
40+
].join('\n'),
41+
ecmaFeatures: {
42+
jsx: true
43+
}
2844
}, {
2945
code: [
3046
'var TestComponent;',
@@ -55,6 +71,15 @@ ruleTester.run('jsx-pascal-case', rule, {
5571
jsx: true
5672
},
5773
errors: [{message: 'Imported JSX component test_component must be in PascalCase'}]
74+
}, {
75+
code: [
76+
'var YELLING;',
77+
'<YELLING />'
78+
].join('\n'),
79+
ecmaFeatures: {
80+
jsx: true
81+
},
82+
errors: [{message: 'Imported JSX component YELLING must be in PascalCase'}]
5883
}, {
5984
code: [
6085
'var testComponent;',

0 commit comments

Comments
 (0)