Skip to content

Commit 1b06f6b

Browse files
committed
fix: match assemblyscript v22 enum identifiers to TitleCase
1 parent 6428983 commit 1b06f6b

File tree

3 files changed

+71
-33
lines changed

3 files changed

+71
-33
lines changed

index.mjs

Lines changed: 66 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env node
22

33
import assemblyscript from "assemblyscript";
4+
import asc from "assemblyscript/asc";
45
import prettier from "prettier";
56
import * as fs from "fs";
67
import { Command } from "commander";
@@ -10,6 +11,8 @@ import chalk from "chalk";
1011
import ignore from "ignore";
1112
import { SingleBar } from "cli-progress";
1213

14+
const ascMajorVersion = parseInt(asc.version.split(".")[1]);
15+
1316
const readFile = fs.promises.readFile;
1417
const writeFile = fs.promises.writeFile;
1518

@@ -27,39 +30,72 @@ function preProcess(code) {
2730
let source = program.sources[0];
2831

2932
let NodeKind = assemblyscript.NodeKind;
30-
3133
function visitDecorators(node) {
3234
let list = [];
3335
let _visit = (_node) => {
34-
switch (_node.kind) {
35-
case NodeKind.SOURCE: {
36-
_node.statements.forEach((statement) => {
37-
_visit(statement);
38-
});
39-
break;
40-
}
41-
case NodeKind.CLASSDECLARATION:
42-
case NodeKind.INTERFACEDECLARATION:
43-
case NodeKind.NAMESPACEDECLARATION: {
44-
_node.members.forEach((statement) => {
45-
_visit(statement);
46-
});
47-
break;
36+
if (ascMajorVersion < 22) {
37+
switch (_node.kind) {
38+
case NodeKind.SOURCE: {
39+
_node.statements.forEach((statement) => {
40+
_visit(statement);
41+
});
42+
break;
43+
}
44+
case NodeKind.CLASSDECLARATION:
45+
case NodeKind.INTERFACEDECLARATION:
46+
case NodeKind.NAMESPACEDECLARATION: {
47+
_node.members.forEach((statement) => {
48+
_visit(statement);
49+
});
50+
break;
51+
}
52+
case NodeKind.ENUMDECLARATION:
53+
case NodeKind.METHODDECLARATION:
54+
case NodeKind.FUNCTIONDECLARATION: {
55+
if (_node.decorators) {
56+
list.push(
57+
..._node.decorators.map((decorator) => {
58+
return {
59+
start: decorator.range.start,
60+
end: decorator.range.end,
61+
};
62+
})
63+
);
64+
}
65+
break;
66+
}
4867
}
49-
case NodeKind.ENUMDECLARATION:
50-
case NodeKind.METHODDECLARATION:
51-
case NodeKind.FUNCTIONDECLARATION: {
52-
if (_node.decorators) {
53-
list.push(
54-
..._node.decorators.map((decorator) => {
55-
return {
56-
start: decorator.range.start,
57-
end: decorator.range.end,
58-
};
59-
})
60-
);
68+
} else {
69+
switch (_node.kind) {
70+
case NodeKind.Source: {
71+
_node.statements.forEach((statement) => {
72+
_visit(statement);
73+
});
74+
break;
75+
}
76+
case NodeKind.ClassDeclaration:
77+
case NodeKind.InterfaceDeclaration:
78+
case NodeKind.NamespaceDeclaration: {
79+
_node.members.forEach((statement) => {
80+
_visit(statement);
81+
});
82+
break;
83+
}
84+
case NodeKind.EnumDeclaration:
85+
case NodeKind.MethodDeclaration:
86+
case NodeKind.FunctionDeclaration: {
87+
if (_node.decorators) {
88+
list.push(
89+
..._node.decorators.map((decorator) => {
90+
return {
91+
start: decorator.range.start,
92+
end: decorator.range.end,
93+
};
94+
})
95+
);
96+
}
97+
break;
6198
}
62-
break;
6399
}
64100
}
65101
};
@@ -103,8 +139,8 @@ async function format(path) {
103139
const tsCode = preProcess(code);
104140
let config = await resolveConfig(path);
105141
const formatTsCode = prettier.format(tsCode, config);
106-
const foramtCode = postProcess(formatTsCode);
107-
return foramtCode;
142+
const formatCode = postProcess(formatTsCode);
143+
return formatCode;
108144
}
109145
async function check(path) {
110146
const code = await readFile(path, { encoding: "utf8" });

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"url": "https://github.com/HerrCai0907/assemblyscript-prettier/issues"
2929
},
3030
"peerDependencies": {
31-
"assemblyscript": "^0.21.0",
31+
"assemblyscript": ">=0.20.0",
3232
"prettier": "^2.7.1"
3333
},
3434
"dependencies": {

tests/index.mjs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { execSync } from "child_process";
22
import { fileURLToPath } from "url";
33
import { dirname, relative, resolve } from "path";
4-
import { copyFileSync, mkdirSync } from "fs";
4+
import { copyFileSync, existsSync, mkdirSync, statSync } from "fs";
55
import chalk from "chalk";
66
import { argv, cwd } from "process";
77
const __filename = fileURLToPath(import.meta.url);
@@ -15,7 +15,9 @@ const targetFile = relative(cwd(), resolve(__dirname, "example.ts"));
1515
const as_version = argv[2] ?? 20;
1616

1717
console.log(chalk.green(`start test prettier for as v0.${as_version}.x`));
18-
mkdirSync(testFolder);
18+
if (!existsSync(testFolder)) {
19+
mkdirSync(testFolder);
20+
}
1921
execSync(`cd ${testFolder} && npm init -y && npm i [email protected]`);
2022
execSync(`cd ${testFolder} && npm i assemblyscript@0.${as_version}`);
2123
console.log(chalk.green("init node_modules done"));

0 commit comments

Comments
 (0)