-
Notifications
You must be signed in to change notification settings - Fork 1
/
ternary-parenthesis.js
38 lines (36 loc) · 1.24 KB
/
ternary-parenthesis.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
module.exports = {
meta: {
type: "layout",
docs: {
description: "enforce parentheses around the condition in ternary expressions, if there is an operator in the condition",
category: "Stylistic Issues",
recommended: false,
},
schema: [], // no options
fixable: "code",
},
create(context) {
return {
ConditionalExpression(node) {
if (node.test.type === "BinaryExpression" || node.test.type === "LogicalExpression") {
const sourceCode = context.getSourceCode();
const beforeOperatorToken = sourceCode.getTokenBefore(node.test);
const afterOperatorToken = sourceCode.getTokenAfter(node.test);
if (beforeOperatorToken.value !== "(" || afterOperatorToken.value !== ")") {
context.report({
node,
message: "The condition in ternary expressions with an operator should be wrapped in parentheses",
fix(fixer) {
const conditionText = sourceCode.getText(node.test);
return [
fixer.insertTextBefore(node.test, "("),
fixer.insertTextAfter(node.test, ")"),
];
},
});
}
}
},
};
},
};