forked from OKEAMAH/prettier
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclean.js
More file actions
68 lines (58 loc) · 1.35 KB
/
clean.js
File metadata and controls
68 lines (58 loc) · 1.35 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import isFrontMatter from "../utils/front-matter/is-front-matter.js";
const ignoredProperties = new Set([
"sourceSpan",
"startSourceSpan",
"endSourceSpan",
"nameSpan",
"valueSpan",
"keySpan",
"tagDefinition",
"tokens",
"valueTokens",
"switchValueSourceSpan",
"expSourceSpan",
"valueSourceSpan",
]);
const embeddedAngularControlFlowBlocks = new Set([
"if",
"else if",
"for",
"switch",
"case",
]);
function clean(original, cloned) {
if (original.type === "text" || original.type === "comment") {
return null;
}
// may be formatted by multiparser
if (
isFrontMatter(original) ||
original.type === "yaml" ||
original.type === "toml"
) {
return null;
}
if (original.type === "attribute") {
delete cloned.value;
}
if (original.type === "docType") {
delete cloned.value;
}
if (
original.type === "angularControlFlowBlock" &&
original.parameters?.children
) {
for (const parameter of cloned.parameters.children) {
if (embeddedAngularControlFlowBlocks.has(original.name)) {
delete parameter.expression;
} else {
parameter.expression = parameter.expression.trim();
}
}
}
if (original.type === "angularIcuExpression") {
cloned.switchValue = original.switchValue.trim();
}
}
clean.ignoredProperties = ignoredProperties;
export default clean;