chore: remove stale file
This commit is contained in:
parent
efbbd19b3d
commit
5dc374a861
@ -1,94 +0,0 @@
|
|||||||
import {
|
|
||||||
CodegenResult,
|
|
||||||
RootNode,
|
|
||||||
generate as baseGenerate,
|
|
||||||
CodegenOptions,
|
|
||||||
NodeTypes,
|
|
||||||
locStub,
|
|
||||||
BlockStatement,
|
|
||||||
ElementTypes,
|
|
||||||
createCallExpression,
|
|
||||||
TemplateLiteral,
|
|
||||||
createTemplateLiteral,
|
|
||||||
CallExpression,
|
|
||||||
TemplateChildNode
|
|
||||||
} from '@vue/compiler-dom'
|
|
||||||
import { isString } from '@vue/shared'
|
|
||||||
|
|
||||||
export function generate(
|
|
||||||
ast: RootNode,
|
|
||||||
options: CodegenOptions
|
|
||||||
): CodegenResult {
|
|
||||||
// construct a SSR-specific codegen tree to pass to core codegen
|
|
||||||
const body: BlockStatement['body'] = []
|
|
||||||
let currentCall: CallExpression | null = null
|
|
||||||
let currentString: TemplateLiteral | null = null
|
|
||||||
|
|
||||||
function ensureCurrentString() {
|
|
||||||
if (!currentCall) {
|
|
||||||
currentCall = createCallExpression(`_push`)
|
|
||||||
body.push(currentCall)
|
|
||||||
}
|
|
||||||
if (!currentString) {
|
|
||||||
currentString = createTemplateLiteral([])
|
|
||||||
currentCall.arguments.push(currentString)
|
|
||||||
}
|
|
||||||
return currentString.elements
|
|
||||||
}
|
|
||||||
|
|
||||||
function pushStringPart(part: TemplateLiteral['elements'][0]) {
|
|
||||||
const bufferedElements = ensureCurrentString()
|
|
||||||
const lastItem = bufferedElements[bufferedElements.length - 1]
|
|
||||||
if (isString(part) && isString(lastItem)) {
|
|
||||||
bufferedElements[bufferedElements.length - 1] += part
|
|
||||||
} else {
|
|
||||||
bufferedElements.push(part)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function processChildren(children: TemplateChildNode[]) {
|
|
||||||
for (let i = 0; i < children.length; i++) {
|
|
||||||
const child = children[i]
|
|
||||||
if (child.type === NodeTypes.ELEMENT) {
|
|
||||||
if (child.tagType === ElementTypes.ELEMENT) {
|
|
||||||
const elementsToAdd = child.ssrCodegenNode!.elements
|
|
||||||
for (let j = 0; j < elementsToAdd.length; j++) {
|
|
||||||
pushStringPart(elementsToAdd[j])
|
|
||||||
}
|
|
||||||
if (child.children.length) {
|
|
||||||
processChildren(child.children)
|
|
||||||
}
|
|
||||||
// push closing tag
|
|
||||||
pushStringPart(`</${child.tag}>`)
|
|
||||||
} else if (child.tagType === ElementTypes.COMPONENT) {
|
|
||||||
// TODO
|
|
||||||
} else if (child.tagType === ElementTypes.SLOT) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
} else if (child.type === NodeTypes.TEXT) {
|
|
||||||
// TODO
|
|
||||||
} else if (child.type === NodeTypes.IF) {
|
|
||||||
// TODO
|
|
||||||
} else if (child.type === NodeTypes.FOR) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const isFragment = ast.children.length > 1
|
|
||||||
if (isFragment) {
|
|
||||||
pushStringPart(`<!---->`)
|
|
||||||
}
|
|
||||||
processChildren(ast.children)
|
|
||||||
if (isFragment) {
|
|
||||||
pushStringPart(`<!---->`)
|
|
||||||
}
|
|
||||||
|
|
||||||
ast.codegenNode = {
|
|
||||||
type: NodeTypes.JS_BLOCK_STATEMENT,
|
|
||||||
loc: locStub,
|
|
||||||
body
|
|
||||||
}
|
|
||||||
|
|
||||||
return baseGenerate(ast, options)
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user