Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 33x 33x 2319x 911x 1408x 33x 1747x 1747x 1951x 911x 133x 133x 911x 911x 1408x 1408x | import { TestElement, TestNode, NodeTypes, TestText, TestComment } from './nodeOps' import { isOn } from '@vue/shared' export function serialize( node: TestNode, indent: number = 0, depth: number = 0 ): string { if (node.type === NodeTypes.ELEMENT) { return serializeElement(node, indent, depth) } else { return serializeText(node, indent, depth) } } export function serializeInner( node: TestElement, indent: number = 0, depth: number = 0 ) { const newLine = indent ? `\n` : `` return node.children.length ? newLine + node.children.map(c => serialize(c, indent, depth + 1)).join(newLine) + newLine : `` } function serializeElement( node: TestElement, indent: number, depth: number ): string { const props = Object.keys(node.props) .map(key => { const value = node.props[key] return isOn(key) || value == null ? `` : value === `` ? key : `${key}=${JSON.stringify(value)}` }) .filter(Boolean) .join(' ') const padding = indent ? ` `.repeat(indent).repeat(depth) : `` return ( `${padding}<${node.tag}${props ? ` ${props}` : ``}>` + `${serializeInner(node, indent, depth)}` + `${padding}</${node.tag}>` ) } function serializeText( node: TestText | TestComment, indent: number, depth: number ): string { const padding = indent ? ` `.repeat(indent).repeat(depth) : `` return ( padding + (node.type === NodeTypes.COMMENT ? `<!--${node.text}-->` : node.text) ) } |