-
-
Notifications
You must be signed in to change notification settings - Fork 44
Expand file tree
/
Copy pathremove-useless-template-expressions.js
More file actions
47 lines (36 loc) · 1.22 KB
/
remove-useless-template-expressions.js
File metadata and controls
47 lines (36 loc) · 1.22 KB
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
39
40
41
42
43
44
45
46
47
import {operator} from 'putout';
const {remove} = operator;
export const report = () => `Avoid useless template expressions`;
export const fix = (path) => {
const expressions = path.get('expressions');
const quasis = path.get('quasis');
const {length} = expressions;
for (let i = 0; i < length; i++) {
const exprPath = expressions[i];
if (exprPath.isLiteral()) {
const a = quasis[i].node.value.raw;
const b = quasis[i + 1].node.value.raw;
const {value} = exprPath.node;
const result = `${a}${value}${b}`;
remove(quasis[i]);
remove(exprPath);
quasis[i + 1].node.value.raw = result;
}
}
};
export const traverse = ({push}) => ({
TemplateLiteral(path) {
const expressions = path.get('expressions');
const {length} = expressions;
if (!length)
return;
for (const expr of expressions) {
if (expr.node.leadingComments)
continue;
if (expr.isLiteral() && !expr.isTemplateLiteral()) {
push(path);
break;
}
}
},
});