Skip to content

Commit 8a9ad95

Browse files
committed
refactor
1 parent 2e9a12b commit 8a9ad95

File tree

1 file changed

+63
-49
lines changed

1 file changed

+63
-49
lines changed

lib/internal/get-all-directive-comments.js

Lines changed: 63 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -44,58 +44,72 @@ function getAllDirectiveCommentsFromAllComments(sourceCode) {
4444
* @returns {DirectiveComment[]} The directive comments.
4545
*/
4646
function getAllDirectiveCommentsFromInlineConfigNodes(sourceCode) {
47-
/** @type {DirectiveComment[]} */
48-
const result = []
49-
const disableDirectives = sourceCode.getDisableDirectives()
50-
for (const directive of disableDirectives.directives) {
51-
result.push({
52-
kind: `eslint-${directive.type}`,
53-
value: directive.value,
54-
description: directive.justification,
55-
node: directive.node,
56-
range: sourceCode.getRange(directive.node),
57-
get loc() {
58-
return sourceCode.getLoc(directive.node)
59-
},
60-
})
61-
}
62-
for (const node of sourceCode.getInlineConfigNodes()) {
63-
const range = sourceCode.getRange(node)
64-
// The node has intersection of the directive comment.
65-
// So, we need to skip it.
66-
if (
67-
result.some(
68-
(comment) =>
69-
comment.range[0] <= range[1] && range[0] <= comment.range[1]
70-
)
71-
) {
72-
continue
73-
}
74-
const nodeText = sourceCode.text.slice(range[0], range[1])
75-
const commentValue = extractCommentContent(nodeText)
76-
const directiveComment = utils.parseDirectiveText(commentValue)
77-
if (
78-
directiveComment != null &&
79-
![
80-
"eslint-disable",
81-
"eslint-disable-line",
82-
"eslint-disable-next-line",
83-
"eslint-enable",
84-
].includes(directiveComment.kind)
85-
) {
86-
result.push({
87-
kind: directiveComment.kind,
88-
value: directiveComment.value,
89-
description: directiveComment.description,
90-
node,
91-
range,
47+
const result = sourceCode.getDisableDirectives().directives.map(
48+
(directive) =>
49+
/** @type {DirectiveComment} */ ({
50+
kind: `eslint-${directive.type}`,
51+
value: directive.value,
52+
description: directive.justification,
53+
node: directive.node,
54+
range: sourceCode.getRange(directive.node),
9255
get loc() {
93-
return sourceCode.getLoc(node)
56+
return sourceCode.getLoc(directive.node)
9457
},
9558
})
96-
}
97-
}
98-
return result
59+
)
60+
61+
return result.concat(
62+
sourceCode
63+
.getInlineConfigNodes()
64+
.map((node) => ({
65+
node,
66+
range: sourceCode.getRange(node),
67+
}))
68+
.filter(
69+
({ range }) =>
70+
// The node has intersection of the directive comment.
71+
// So, we need to skip it.
72+
!result.some(
73+
(comment) =>
74+
comment.range[0] <= range[1] &&
75+
range[0] <= comment.range[1]
76+
)
77+
)
78+
.map(({ node, range }) => {
79+
const nodeText = sourceCode.text.slice(range[0], range[1])
80+
const commentValue = extractCommentContent(nodeText)
81+
const directiveComment = utils.parseDirectiveText(commentValue)
82+
83+
return {
84+
directiveComment,
85+
node,
86+
range,
87+
}
88+
})
89+
.filter(
90+
({ directiveComment }) =>
91+
directiveComment != null &&
92+
![
93+
"eslint-disable",
94+
"eslint-disable-line",
95+
"eslint-disable-next-line",
96+
"eslint-enable",
97+
].includes(directiveComment.kind)
98+
)
99+
.map(
100+
({ directiveComment, node, range }) =>
101+
/** @type {DirectiveComment} */ ({
102+
kind: directiveComment.kind,
103+
value: directiveComment.value,
104+
description: directiveComment.description,
105+
node,
106+
range,
107+
get loc() {
108+
return sourceCode.getLoc(node)
109+
},
110+
})
111+
)
112+
)
99113
}
100114

101115
function extractCommentContent(text) {

0 commit comments

Comments
 (0)