Skip to content
This repository was archived by the owner on Nov 27, 2023. It is now read-only.

Commit d981864

Browse files
committed
perf: Reduced indention depth
1 parent a348cd9 commit d981864

File tree

1 file changed

+30
-29
lines changed

1 file changed

+30
-29
lines changed

Diff for: index.ts

+30-29
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,35 @@ export function generate(name: string, code: string): string {
2929
});
3030
const writer = new Writer();
3131
writer.declareModule(name, () => {
32-
writer.import('* as React', 'react', () => {
33-
writer.nl();
34-
walk(ast.program, {
35-
'ExportDefaultDeclaration': (node: any) => {
36-
walk(node, {
37-
'ClassDeclaration': (node: any) => {
38-
let propTypes: any = false;
39-
walk(node.body, {
40-
'ClassProperty': (node: any) => {
41-
if (node.key.name == 'propTypes') {
42-
propTypes = {};
43-
walk(node.value, {
44-
'ObjectProperty': (node: any) => {
45-
propTypes[node.key.name] = getTypeFromPropType(node.value);
46-
}
47-
});
48-
}
32+
writer.import('* as React', 'react');
33+
writer.nl();
34+
walk(ast.program, {
35+
'ExportDefaultDeclaration': (node: any) => {
36+
let name: string;
37+
let propTypes: any = false;
38+
walk(node, {
39+
'ClassDeclaration': (node: any) => {
40+
name = node.id.name;
41+
walk(node.body, {
42+
'ClassProperty': (node: any) => {
43+
if (node.key.name == 'propTypes') {
44+
propTypes = {};
45+
walk(node.value, {
46+
'ObjectProperty': (node: any) => {
47+
propTypes[node.key.name] = getTypeFromPropType(node.value);
48+
}
49+
});
4950
}
50-
});
51-
writer.props(node.id.name, propTypes);
52-
writer.nl();
53-
writer.exportDefault(() => {
54-
writer.class(node.id.name, !!propTypes);
55-
});
56-
}
57-
});
58-
}
59-
});
51+
}
52+
});
53+
writer.props(name, propTypes);
54+
writer.nl();
55+
}
56+
});
57+
writer.exportDefault(() => {
58+
writer.class(name, !!propTypes);
59+
});
60+
}
6061
});
6162
});
6263
return writer.toString();
@@ -154,11 +155,11 @@ class Writer {
154155
this.nl();
155156
}
156157

157-
import(decl: string, from: string, fn: () => void) {
158+
import(decl: string, from: string, fn?: () => void) {
158159
this.indent();
159160
this.code += `import ${decl} from '${from}';`;
160161
this.nl();
161-
fn();
162+
fn && fn();
162163
}
163164

164165
props(name: string, props: any, fn?: () => void) {

0 commit comments

Comments
 (0)