Skip to content

Commit 421eba3

Browse files
committed
refactor(compiler-vapor): simplify genExpression
1 parent c79629f commit 421eba3

File tree

1 file changed

+47
-47
lines changed

1 file changed

+47
-47
lines changed

packages/compiler-vapor/src/generators/expression.ts

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,11 @@ export function genExpression(
1919
context: CodegenContext,
2020
assignment?: string,
2121
): CodeFragment[] {
22-
const {
23-
options: { prefixIdentifiers },
24-
} = context
22+
const { prefixIdentifiers } = context.options
23+
const { content, ast, isStatic, loc } = node
2524

26-
const { content: rawExpr, ast, isStatic, loc } = node
2725
if (isStatic) {
28-
return [[JSON.stringify(rawExpr), NewlineType.None, loc]]
26+
return [[JSON.stringify(content), NewlineType.None, loc]]
2927
}
3028

3129
if (
@@ -36,16 +34,16 @@ export function genExpression(
3634
ast === false ||
3735
isConstantExpression(node)
3836
) {
39-
return [[rawExpr, NewlineType.None, loc], assignment && ` = ${assignment}`]
37+
return [[content, NewlineType.None, loc], assignment && ` = ${assignment}`]
4038
}
4139

4240
// the expression is a simple identifier
4341
if (ast === null) {
44-
return genIdentifier(rawExpr, context, loc, assignment)
42+
return genIdentifier(content, context, loc, assignment)
4543
}
4644

4745
const ids: Identifier[] = []
48-
const parentStackMap = new WeakMap<Identifier, Node[]>()
46+
const parentStackMap = new Map<Identifier, Node[]>()
4947
const parentStack: Node[] = []
5048
walkIdentifiers(
5149
ast!,
@@ -56,55 +54,57 @@ export function genExpression(
5654
false,
5755
parentStack,
5856
)
57+
5958
let hasMemberExpression = false
6059
if (ids.length) {
61-
ids.sort((a, b) => a.start! - b.start!)
6260
const [frag, push] = buildCodeFragment()
63-
ids.forEach((id, i) => {
64-
// range is offset by -1 due to the wrapping parens when parsed
65-
const start = id.start! - 1
66-
const end = id.end! - 1
67-
const last = ids[i - 1]
68-
69-
const leadingText = rawExpr.slice(last ? last.end! - 1 : 0, start)
70-
if (leadingText.length) push([leadingText, NewlineType.Unknown])
71-
72-
const source = rawExpr.slice(start, end)
73-
const parentStack = parentStackMap.get(id)!
74-
const parent = parentStack[parentStack.length - 1]
75-
76-
hasMemberExpression ||=
77-
parent &&
78-
(parent.type === 'MemberExpression' ||
79-
parent.type === 'OptionalMemberExpression')
80-
81-
push(
82-
...genIdentifier(
83-
source,
84-
context,
85-
{
86-
start: advancePositionWithClone(node.loc.start, source, start),
87-
end: advancePositionWithClone(node.loc.start, source, end),
61+
ids
62+
.sort((a, b) => a.start! - b.start!)
63+
.forEach((id, i) => {
64+
// range is offset by -1 due to the wrapping parens when parsed
65+
const start = id.start! - 1
66+
const end = id.end! - 1
67+
const last = ids[i - 1]
68+
69+
const leadingText = content.slice(last ? last.end! - 1 : 0, start)
70+
if (leadingText.length) push([leadingText, NewlineType.Unknown])
71+
72+
const source = content.slice(start, end)
73+
const parentStack = parentStackMap.get(id)!
74+
const parent = parentStack[parentStack.length - 1]
75+
76+
hasMemberExpression ||=
77+
parent &&
78+
(parent.type === 'MemberExpression' ||
79+
parent.type === 'OptionalMemberExpression')
80+
81+
push(
82+
...genIdentifier(
8883
source,
89-
},
90-
hasMemberExpression ? undefined : assignment,
91-
id,
92-
parent,
93-
parentStack,
94-
),
95-
)
96-
97-
if (i === ids.length - 1 && end < rawExpr.length) {
98-
push([rawExpr.slice(end), NewlineType.Unknown])
99-
}
100-
})
84+
context,
85+
{
86+
start: advancePositionWithClone(node.loc.start, source, start),
87+
end: advancePositionWithClone(node.loc.start, source, end),
88+
source,
89+
},
90+
hasMemberExpression ? undefined : assignment,
91+
id,
92+
parent,
93+
parentStack,
94+
),
95+
)
96+
97+
if (i === ids.length - 1 && end < content.length) {
98+
push([content.slice(end), NewlineType.Unknown])
99+
}
100+
})
101101

102102
if (assignment && hasMemberExpression) {
103103
push(` = ${assignment}`)
104104
}
105105
return frag
106106
} else {
107-
return [[rawExpr, NewlineType.Unknown, loc]]
107+
return [[content, NewlineType.Unknown, loc]]
108108
}
109109
}
110110

0 commit comments

Comments
 (0)