Skip to content

Commit 9703aba

Browse files
committed
fix: ensure ignorePrivate setting works with iterateAllJsdocs rules
This impacts rules: `checkAccess`, `checkAlignment`, `checkExamples`, `checkIndentation`, `checkSyntax`, `checkTagNames`, `checkTypes`, `checkValues`, `emptyTags`, `newlineAfterDescription`, `noUndefinedTypes, `requireDescriptionCompleteSentence`, `requireHyphenBeforeParamDescription`, `validTypes Factors out common `iterate` code. Also ensures any future rules with `noTrim` but without `iterateAllJsdocs` will work
1 parent 4fce006 commit 9703aba

File tree

1 file changed

+45
-50
lines changed

1 file changed

+45
-50
lines changed

src/iterateJsdoc.js

Lines changed: 45 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,43 @@ const makeReport = (context, commentNode) => {
409409
* ) => any } JsdocVisitor
410410
*/
411411

412+
const iterate = (
413+
ruleConfig, context, lines, jsdocNode, node, settings, sourceCode, iterator,
414+
) => {
415+
const sourceLine = lines[jsdocNode.loc.start.line - 1];
416+
const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);
417+
const jsdoc = parseComment(jsdocNode, indent, !ruleConfig.noTrim);
418+
const report = makeReport(context, jsdocNode);
419+
420+
const utils = getUtils(
421+
node,
422+
jsdoc,
423+
jsdocNode,
424+
settings,
425+
report,
426+
context,
427+
);
428+
429+
if (
430+
settings.ignorePrivate &&
431+
utils.hasTag('private')
432+
) {
433+
return;
434+
}
435+
436+
iterator({
437+
context,
438+
indent,
439+
jsdoc,
440+
jsdocNode,
441+
node,
442+
report,
443+
settings,
444+
sourceCode,
445+
utils,
446+
});
447+
};
448+
412449
/**
413450
* Create an eslint rule that iterates over all JSDocs, regardless of whether
414451
* they are attached to a function-like node.
@@ -427,22 +464,10 @@ const iterateAllJsdocs = (iterator, ruleConfig) => {
427464
if (!(/^\/\*\*\s/).test(sourceCode.getText(jsdocNode))) {
428465
return;
429466
}
430-
const sourceLine = lines[jsdocNode.loc.start.line - 1];
431-
const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);
432-
const jsdoc = parseComment(jsdocNode, indent, !ruleConfig.noTrim);
433-
const report = makeReport(context, jsdocNode);
434-
435-
iterator({
436-
context,
437-
indent,
438-
jsdoc,
439-
jsdocNode,
440-
node,
441-
report,
442-
settings,
443-
sourceCode,
444-
utils: getUtils(node, jsdoc, jsdocNode, settings, report, context),
445-
});
467+
iterate(
468+
ruleConfig, context, lines, jsdocNode, node,
469+
settings, sourceCode, iterator,
470+
);
446471
});
447472
};
448473

@@ -525,48 +550,18 @@ export default function iterateJsdoc (iterator, ruleConfig) {
525550

526551
const settings = getSettings(context);
527552

553+
const {lines} = sourceCode;
528554
const checkJsdoc = (node) => {
529555
const jsdocNode = getJSDocComment(sourceCode, node, settings);
530556

531557
if (!jsdocNode) {
532558
return;
533559
}
534560

535-
const sourceLine = sourceCode.lines[jsdocNode.loc.start.line - 1];
536-
537-
const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);
538-
539-
const jsdoc = parseComment(jsdocNode, indent);
540-
541-
const report = makeReport(context, jsdocNode);
542-
543-
const utils = getUtils(
544-
node,
545-
jsdoc,
546-
jsdocNode,
547-
settings,
548-
report,
549-
context,
561+
iterate(
562+
ruleConfig, context, lines, jsdocNode, node,
563+
settings, sourceCode, iterator,
550564
);
551-
552-
if (
553-
settings.ignorePrivate &&
554-
utils.hasTag('private')
555-
) {
556-
return;
557-
}
558-
559-
iterator({
560-
context,
561-
indent,
562-
jsdoc,
563-
jsdocNode,
564-
node,
565-
report,
566-
settings,
567-
sourceCode,
568-
utils,
569-
});
570565
};
571566

572567
if (ruleConfig.contextDefaults) {

0 commit comments

Comments
 (0)