Skip to content

Commit 3cba1e9

Browse files
committed
fix: sentence-case doesn't allow upper-case characters in first word
This changes the `sentence-case` rule to also accept upper-case characters in the first word, allowing the use of acronyms (e.g. "HTML", "JSX") and words which include upper-case characters (e.g. "JavaScript") at the beginning of a `sentence-case` input. For example, with `'subject-case': [2, 'always', 'sentence-case']`, the following commit messages were rejected (ESLint commit message style): - `Fix: VAT note not properly displayed` - `Upgrade: ESLint dev dependency` Related: #211
1 parent f1d443b commit 3cba1e9

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

@commitlint/ensure/src/case.js

+2-5
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,8 @@ function toCase(input, target) {
3434
return input.toUpperCase();
3535
case 'sentence-case':
3636
case 'sentencecase': {
37-
const [word] = input.split(' ');
38-
return `${toCase(word.charAt(0), 'upper-case')}${toCase(
39-
word.slice(1),
40-
'lower-case'
41-
)}${input.slice(word.length)}`;
37+
const [firstWord] = input.split(' ');
38+
return firstWord.charAt(0).toUpperCase() + input.slice(1);
4239
}
4340
case 'lower-case':
4441
case 'lowercase':

@commitlint/ensure/src/case.test.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,16 @@ test('false for lowercase on sentencecase', t => {
6161
t.is(ensure('sentence case', 'sentence-case'), false);
6262
});
6363

64-
test('false for UPPERCASE on sentencecase', t => {
65-
t.is(ensure('UPPERCASE', 'sentence-case'), false);
64+
test('true for UPPERCASE on sentencecase', t => {
65+
t.is(ensure('UPPERCASE', 'sentence-case'), true);
6666
});
6767

6868
test('true for Start Case on sentencecase', t => {
6969
t.is(ensure('Start Case', 'sentence-case'), true);
7070
});
7171

72-
test('false for PascalCase on sentencecase', t => {
73-
t.is(ensure('PascalCase', 'sentence-case'), false);
72+
test('true for PascalCase on sentencecase', t => {
73+
t.is(ensure('PascalCase', 'sentence-case'), true);
7474
});
7575

7676
test('false for kebab-case on sentencecase', t => {

0 commit comments

Comments
 (0)