Skip to content

Commit ac7212f

Browse files
committed
chore: extract settings normaliztion codes to a function
1 parent 0f54957 commit ac7212f

File tree

1 file changed

+74
-85
lines changed

1 file changed

+74
-85
lines changed

src/iterateJsdoc.js

Lines changed: 74 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,30 @@ const parseComment = (commentNode, indent) => {
2525
const curryUtils = (
2626
node,
2727
jsdoc,
28-
tagNamePreference,
29-
exampleCodeRegex,
30-
rejectExampleCodeRegex,
31-
additionalTagNames,
32-
baseConfig,
33-
configFile,
34-
captionRequired,
35-
matchingFileName,
36-
eslintrcForExamples,
37-
allowInlineConfig,
38-
allowEmptyNamepaths,
39-
reportUnusedDisableDirectives,
40-
noDefaultExampleRules,
41-
overrideReplacesDocs,
42-
implementsReplacesDocs,
43-
augmentsExtendsReplacesDocs,
44-
allowOverrideWithoutParam,
45-
allowImplementsWithoutParam,
46-
allowAugmentsExtendsWithoutParam,
47-
checkSeesForNamepaths,
48-
forceRequireReturn,
49-
avoidExampleOnConstructors,
28+
{
29+
tagNamePreference,
30+
exampleCodeRegex,
31+
rejectExampleCodeRegex,
32+
additionalTagNames,
33+
baseConfig,
34+
configFile,
35+
captionRequired,
36+
matchingFileName,
37+
eslintrcForExamples,
38+
allowInlineConfig,
39+
allowEmptyNamepaths,
40+
reportUnusedDisableDirectives,
41+
noDefaultExampleRules,
42+
overrideReplacesDocs,
43+
implementsReplacesDocs,
44+
augmentsExtendsReplacesDocs,
45+
allowOverrideWithoutParam,
46+
allowImplementsWithoutParam,
47+
allowAugmentsExtendsWithoutParam,
48+
checkSeesForNamepaths,
49+
forceRequireReturn,
50+
avoidExampleOnConstructors
51+
},
5052
ancestors,
5153
sourceCode,
5254
context
@@ -257,6 +259,53 @@ const curryUtils = (
257259
return utils;
258260
};
259261

262+
const getSettings = (context) => {
263+
const settings = {};
264+
265+
// All rules
266+
settings.ignorePrivate = Boolean(_.get(context, 'settings.jsdoc.ignorePrivate'));
267+
268+
// `check-tag-names` and many require/param rules
269+
settings.tagNamePreference = _.get(context, 'settings.jsdoc.tagNamePreference') || {};
270+
271+
// `check-tag-names` only
272+
settings.additionalTagNames = _.get(context, 'settings.jsdoc.additionalTagNames') || {};
273+
274+
// `check-examples` only
275+
settings.exampleCodeRegex = _.get(context, 'settings.jsdoc.exampleCodeRegex') || null;
276+
settings.rejectExampleCodeRegex = _.get(context, 'settings.jsdoc.rejectExampleCodeRegex') || null;
277+
settings.matchingFileName = _.get(context, 'settings.jsdoc.matchingFileName') || null;
278+
settings.baseConfig = _.get(context, 'settings.jsdoc.baseConfig') || {};
279+
settings.configFile = _.get(context, 'settings.jsdoc.configFile');
280+
settings.eslintrcForExamples = _.get(context, 'settings.jsdoc.eslintrcForExamples') !== false;
281+
settings.allowInlineConfig = _.get(context, 'settings.jsdoc.allowInlineConfig') !== false;
282+
settings.reportUnusedDisableDirectives = _.get(context, 'settings.jsdoc.reportUnusedDisableDirectives') !== false;
283+
settings.captionRequired = Boolean(_.get(context, 'settings.jsdoc.captionRequired'));
284+
settings.noDefaultExampleRules = Boolean(_.get(context, 'settings.jsdoc.noDefaultExampleRules'));
285+
286+
// `require-param`, `require-description`, `require-example`, `require-returns`
287+
settings.overrideReplacesDocs = _.get(context, 'settings.jsdoc.overrideReplacesDocs');
288+
settings.implementsReplacesDocs = _.get(context, 'settings.jsdoc.implementsReplacesDocs');
289+
settings.augmentsExtendsReplacesDocs = _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs');
290+
291+
// `require-param` only (deprecated)
292+
settings.allowOverrideWithoutParam = _.get(context, 'settings.jsdoc.allowOverrideWithoutParam');
293+
settings.allowImplementsWithoutParam = _.get(context, 'settings.jsdoc.allowImplementsWithoutParam');
294+
settings.allowAugmentsExtendsWithoutParam = _.get(context, 'settings.jsdoc.allowAugmentsExtendsWithoutParam');
295+
296+
// `valid-types` only
297+
settings.allowEmptyNamepaths = _.get(context, 'settings.jsdoc.allowEmptyNamepaths') !== false;
298+
settings.checkSeesForNamepaths = Boolean(_.get(context, 'settings.jsdoc.checkSeesForNamepaths'));
299+
300+
// `require-returns` only
301+
settings.forceRequireReturn = Boolean(_.get(context, 'settings.jsdoc.forceRequireReturn'));
302+
303+
// `require-example` only
304+
settings.avoidExampleOnConstructors = Boolean(_.get(context, 'settings.jsdoc.avoidExampleOnConstructors'));
305+
306+
return settings;
307+
};
308+
260309
export {
261310
parseComment
262311
};
@@ -275,46 +324,7 @@ export default (iterator, opts = {}) => {
275324
create (context) {
276325
const sourceCode = context.getSourceCode();
277326

278-
// All rules
279-
const ignorePrivate = Boolean(_.get(context, 'settings.jsdoc.ignorePrivate'));
280-
281-
// `check-tag-names` and many require/param rules
282-
const tagNamePreference = _.get(context, 'settings.jsdoc.tagNamePreference') || {};
283-
284-
// `check-tag-names` only
285-
const additionalTagNames = _.get(context, 'settings.jsdoc.additionalTagNames') || {};
286-
287-
// `check-examples` only
288-
const exampleCodeRegex = _.get(context, 'settings.jsdoc.exampleCodeRegex') || null;
289-
const rejectExampleCodeRegex = _.get(context, 'settings.jsdoc.rejectExampleCodeRegex') || null;
290-
const matchingFileName = _.get(context, 'settings.jsdoc.matchingFileName') || null;
291-
const baseConfig = _.get(context, 'settings.jsdoc.baseConfig') || {};
292-
const configFile = _.get(context, 'settings.jsdoc.configFile');
293-
const eslintrcForExamples = _.get(context, 'settings.jsdoc.eslintrcForExamples') !== false;
294-
const allowInlineConfig = _.get(context, 'settings.jsdoc.allowInlineConfig') !== false;
295-
const reportUnusedDisableDirectives = _.get(context, 'settings.jsdoc.reportUnusedDisableDirectives') !== false;
296-
const captionRequired = Boolean(_.get(context, 'settings.jsdoc.captionRequired'));
297-
const noDefaultExampleRules = Boolean(_.get(context, 'settings.jsdoc.noDefaultExampleRules'));
298-
299-
// `require-param`, `require-description`, `require-example`, `require-returns`
300-
const overrideReplacesDocs = _.get(context, 'settings.jsdoc.overrideReplacesDocs');
301-
const implementsReplacesDocs = _.get(context, 'settings.jsdoc.implementsReplacesDocs');
302-
const augmentsExtendsReplacesDocs = _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs');
303-
304-
// `require-param` only (deprecated)
305-
const allowOverrideWithoutParam = _.get(context, 'settings.jsdoc.allowOverrideWithoutParam');
306-
const allowImplementsWithoutParam = _.get(context, 'settings.jsdoc.allowImplementsWithoutParam');
307-
const allowAugmentsExtendsWithoutParam = _.get(context, 'settings.jsdoc.allowAugmentsExtendsWithoutParam');
308-
309-
// `valid-types` only
310-
const allowEmptyNamepaths = _.get(context, 'settings.jsdoc.allowEmptyNamepaths') !== false;
311-
const checkSeesForNamepaths = Boolean(_.get(context, 'settings.jsdoc.checkSeesForNamepaths'));
312-
313-
// `require-returns` only
314-
const forceRequireReturn = Boolean(_.get(context, 'settings.jsdoc.forceRequireReturn'));
315-
316-
// `require-example` only
317-
const avoidExampleOnConstructors = Boolean(_.get(context, 'settings.jsdoc.avoidExampleOnConstructors'));
327+
const settings = getSettings(context);
318328

319329
const checkJsdoc = (node) => {
320330
const jsdocNode = getJSDocComment(sourceCode, node);
@@ -367,34 +377,13 @@ export default (iterator, opts = {}) => {
367377
const utils = curryUtils(
368378
node,
369379
jsdoc,
370-
tagNamePreference,
371-
exampleCodeRegex,
372-
rejectExampleCodeRegex,
373-
additionalTagNames,
374-
baseConfig,
375-
configFile,
376-
captionRequired,
377-
matchingFileName,
378-
eslintrcForExamples,
379-
allowInlineConfig,
380-
allowEmptyNamepaths,
381-
reportUnusedDisableDirectives,
382-
noDefaultExampleRules,
383-
overrideReplacesDocs,
384-
implementsReplacesDocs,
385-
augmentsExtendsReplacesDocs,
386-
allowOverrideWithoutParam,
387-
allowImplementsWithoutParam,
388-
allowAugmentsExtendsWithoutParam,
389-
checkSeesForNamepaths,
390-
forceRequireReturn,
391-
avoidExampleOnConstructors,
380+
settings,
392381
ancestors,
393382
sourceCode
394383
);
395384

396385
if (
397-
ignorePrivate &&
386+
settings.ignorePrivate &&
398387
utils.hasTag('private')
399388
) {
400389
return;

0 commit comments

Comments
 (0)