Skip to content

Commit 38e30f5

Browse files
committed
fix: correct README generation logic
1 parent 69acabd commit 38e30f5

File tree

3 files changed

+72
-4
lines changed

3 files changed

+72
-4
lines changed

README.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ JSDoc linting rules for ESLint.
2121
* [`check-types`](#eslint-plugin-jsdoc-rules-check-types)
2222
* [`newline-after-description`](#eslint-plugin-jsdoc-rules-newline-after-description)
2323
* [`no-undefined-types`](#eslint-plugin-jsdoc-rules-no-undefined-types)
24+
* [`require-description`](#eslint-plugin-jsdoc-rules-require-description)
2425
* [`require-description-complete-sentence`](#eslint-plugin-jsdoc-rules-require-description-complete-sentence)
2526
* [`require-example`](#eslint-plugin-jsdoc-rules-require-example)
2627
* [`require-hyphen-before-param-description`](#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description)
@@ -44,6 +45,7 @@ This table maps the rules between `eslint-plugin-jsdoc` and `jscs-jsdoc`.
4445
| [`check-tag-names`](https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-tag-names) | N/A ~ [`checkAnnotations`](https://github.com/jscs-dev/jscs-jsdoc#checkannotations) |
4546
| [`check-types`](https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types) | [`checkTypes`](https://github.com/jscs-dev/jscs-jsdoc#checktypes) |
4647
| [`newline-after-description`](https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-newline-after-description) | [`requireNewlineAfterDescription`](https://github.com/jscs-dev/jscs-jsdoc#requirenewlineafterdescription) and [`disallowNewlineAfterDescription`](https://github.com/jscs-dev/jscs-jsdoc#disallownewlineafterdescription) |
48+
| [`require-description`](https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description) | N/A |
4749
| [`require-description-complete-sentence`](https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence) | [`requireDescriptionCompleteSentence`](https://github.com/jscs-dev/jscs-jsdoc#requiredescriptioncompletesentence) |
4850
| [`require-example`](https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-example) | N/A |
4951
| [`require-hyphen-before-param-description`](https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description) | [`requireHyphenBeforeDescription`](https://github.com/jscs-dev/jscs-jsdoc#requirehyphenbeforedescription) |
@@ -100,6 +102,7 @@ Finally, enable all of the rules that you would like to use.
100102
"jsdoc/check-types": 1,
101103
"jsdoc/newline-after-description": 1,
102104
"jsdoc/no-undefined-types": 1,
105+
"jsdoc/require-description": 1,
103106
"jsdoc/require-description-complete-sentence": 1,
104107
"jsdoc/require-example": 1,
105108
"jsdoc/require-hyphen-before-param-description": 1,
@@ -873,6 +876,71 @@ function quux(foo) {
873876
```
874877

875878

879+
<a name="eslint-plugin-jsdoc-rules-require-description"></a>
880+
### <code>require-description</code>
881+
882+
Requires that all functions have a description.
883+
884+
* All functions must have a `@description` tag.
885+
* Every description tag must have a non-empty description that explains the purpose of the method.
886+
887+
|||
888+
|---|---|
889+
|Context|`ArrowFunctionExpression`, `FunctionDeclaration`, `FunctionExpression`|
890+
|Tags|`class`, `example`|
891+
892+
The following patterns are considered problems:
893+
894+
```js
895+
/**
896+
*
897+
*/
898+
function quux () {
899+
900+
}
901+
// Message: Missing JSDoc @description declaration.
902+
903+
/**
904+
* @description
905+
*/
906+
function quux () {
907+
908+
}
909+
// Message: Missing JSDoc @description description.
910+
```
911+
912+
The following patterns are not considered problems:
913+
914+
```js
915+
/**
916+
* @description
917+
* // arbitrary description content
918+
*/
919+
function quux () {
920+
921+
}
922+
923+
/**
924+
* @description
925+
* quux(); // does something useful
926+
*/
927+
function quux () {
928+
929+
}
930+
931+
/**
932+
* @description <caption>Valid usage</caption>
933+
* quux(); // does something useful
934+
*
935+
* @description <caption>Invalid usage</caption>
936+
* quux('random unwanted arg'); // results in an error
937+
*/
938+
function quux () {
939+
940+
}
941+
```
942+
943+
876944
<a name="eslint-plugin-jsdoc-rules-require-description-complete-sentence"></a>
877945
### <code>require-description-complete-sentence</code>
878946

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"url": "https://github.com/gajus/eslint-plugin-jsdoc"
5555
},
5656
"scripts": {
57-
"add-assertions": "babel-node --presets es2015 ./src/bin/readme-assertions",
57+
"add-assertions": "babel-node ./src/bin/readme-assertions",
5858
"build": "NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps",
5959
"create-readme": "gitdown ./.README/README.md --output-file ./README.md && npm run add-assertions",
6060
"lint": "eslint ./src ./test",

src/bin/readme-assertions.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ const formatCodeSnippet = (setup) => {
4545
};
4646

4747
const getAssertions = () => {
48-
const assertionFiles = glob.sync(path.resolve(__dirname, '../test/rules/assertions/*.js'));
48+
const assertionFiles = glob.sync(path.resolve(__dirname, '../../test/rules/assertions/*.js'));
4949

5050
const assertionNames = _.map(assertionFiles, (filePath) => {
5151
return path.basename(filePath, '.js');
5252
});
5353

5454
const assertionCodes = _.map(assertionFiles, (filePath) => {
5555
// eslint-disable-next-line global-require, import/no-dynamic-require
56-
const codes = require(filePath).default;
56+
const codes = require(filePath);
5757

5858
return {
5959
invalid: _.map(codes.invalid, formatCodeSnippet),
@@ -65,7 +65,7 @@ const getAssertions = () => {
6565
};
6666

6767
const updateDocuments = (assertions) => {
68-
const readmeDocumentPath = path.join(__dirname, '../README.md');
68+
const readmeDocumentPath = path.join(__dirname, '../../README.md');
6969

7070
let documentBody = fs.readFileSync(readmeDocumentPath, 'utf8');
7171

0 commit comments

Comments
 (0)