@@ -6,7 +6,7 @@ const extractParagraphs = (text) => {
6
6
} ;
7
7
8
8
const extractSentences = ( text ) => {
9
- return text . split ( / \. \s * / ) . filter ( ( sentence ) => {
9
+ return text . split ( / \. \s + | \. $ / ) . filter ( ( sentence ) => {
10
10
// Ignore sentences with only whitespaces.
11
11
return ! / ^ \s * $ / . test ( sentence ) ;
12
12
} ) . map ( ( sentence ) => {
@@ -49,31 +49,34 @@ const validateDescription = (description, report, jsdocNode, sourceCode) => {
49
49
return _ . some ( paragraphs , ( paragraph ) => {
50
50
const sentences = extractSentences ( paragraph ) ;
51
51
52
- if ( _ . some ( sentences , ( sentence ) => {
53
- return ! isCapitalized ( sentence ) ;
54
- } ) ) {
55
- report ( 'Sentence should start with an uppercase character.' , ( fixer ) => {
56
- let text = sourceCode . getText ( jsdocNode ) ;
52
+ const fix = ( fixer ) => {
53
+ let text = sourceCode . getText ( jsdocNode ) ;
54
+
55
+ if ( ! _ . endsWith ( paragraph , '.' ) ) {
56
+ const line = _ . last ( paragraph . split ( '\n' ) ) ;
57
+
58
+ text = text . replace ( line , line + '.' ) ;
59
+ }
57
60
58
- for ( const sentence of sentences . filter ( ( sentence_ ) => {
59
- return ! isCapitalized ( sentence_ ) ;
60
- } ) ) {
61
- const beginning = sentence . split ( / \n / ) [ 0 ] ;
61
+ for ( const sentence of sentences . filter ( ( sentence_ ) => {
62
+ return ! isCapitalized ( sentence_ ) ;
63
+ } ) ) {
64
+ const beginning = sentence . split ( '\n' ) [ 0 ] ;
62
65
63
- text = text . replace ( beginning , capitalize ( beginning ) ) ;
64
- }
66
+ text = text . replace ( beginning , capitalize ( beginning ) ) ;
67
+ }
65
68
66
- return fixer . replaceText ( jsdocNode , text ) ;
67
- } ) ;
69
+ return fixer . replaceText ( jsdocNode , text ) ;
70
+ } ;
71
+
72
+ if ( _ . some ( sentences , ( sentence ) => {
73
+ return ! isCapitalized ( sentence ) ;
74
+ } ) ) {
75
+ report ( 'Sentence should start with an uppercase character.' , fix ) ;
68
76
}
69
77
70
78
if ( ! / \. $ / . test ( paragraph ) ) {
71
- report ( 'Sentence must end with a period.' , ( fixer ) => {
72
- const line = _ . last ( paragraph . split ( '\n' ) ) ;
73
- const replacement = sourceCode . getText ( jsdocNode ) . replace ( line , line + '.' ) ;
74
-
75
- return fixer . replaceText ( jsdocNode , replacement ) ;
76
- } ) ;
79
+ report ( 'Sentence must end with a period.' , fix ) ;
77
80
78
81
return true ;
79
82
}
0 commit comments