From 3ab016e44f23ef4c8bab5a23213fdcb932ab20c1 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 22 Sep 2019 21:10:22 -0400 Subject: [PATCH] wip: improve v-if & v-for codegen output formatting --- packages/compiler-core/src/codegen.ts | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/compiler-core/src/codegen.ts b/packages/compiler-core/src/codegen.ts index a32b09c1..296c1e0b 100644 --- a/packages/compiler-core/src/codegen.ts +++ b/packages/compiler-core/src/codegen.ts @@ -291,12 +291,14 @@ function genIfBranch( context: CodegenContext ) { if (condition) { - const { push, indent, deindent, newline } = context // v-if or v-else-if + const { push, indent, deindent, newline } = context push(`(${condition.content})`, condition) indent() + context.indentLevel++ push(`? `) genChildren(children, context) + context.indentLevel-- newline() push(`: `) if (nextIndex < branches.length) { @@ -317,40 +319,41 @@ function genFor(node: ForNode, context: CodegenContext) { const { source, keyAlias, valueAlias, objectIndexAlias, children } = node push(`${RENDER_LIST_HELPER}(`, node) genExpression(source, context) - context.push(`(`) + push(`, (`) if (valueAlias) { // not using genExpression here because these aliases can only be code // that is valid in the function argument position, so the parse rule can // be off and they don't need identifier prefixing anyway. push(valueAlias.content, valueAlias) - push(`, `) } if (keyAlias) { if (!valueAlias) { - push(`_, `) + push(`_`) } - push(keyAlias.content, keyAlias) push(`, `) + push(keyAlias.content, keyAlias) } if (objectIndexAlias) { if (!keyAlias) { if (!valueAlias) { - push(`_, `) + push(`_, __`) + } else { + push(`__`) } - push(`_, `) } + push(`, `) push(objectIndexAlias.content, objectIndexAlias) } - context.push(`) => `) + push(`) => `) genChildren(children, context) - context.push(`)`) + push(`)`) } // JavaScript function genCallExpression( node: CallExpression, context: CodegenContext, - multilines = node.arguments.length > 1 + multilines = node.arguments.length > 2 ) { context.push(node.callee + `(`, node) multilines && context.indent()