]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
feat(renderer-test): allow specifying indent for serialization
authorEvan You <yyx990803@gmail.com>
Mon, 1 Oct 2018 21:35:55 +0000 (17:35 -0400)
committerEvan You <yyx990803@gmail.com>
Mon, 1 Oct 2018 21:35:55 +0000 (17:35 -0400)
packages/renderer-test/__tests__/testRenderer.spec.ts
packages/renderer-test/src/serialize.ts

index e50f9706cb35355dfbce393f157b52f4ea77a199..f20777a0287ad2ef5a6f8846ae3471417cb6bedd 100644 (file)
@@ -138,8 +138,8 @@ describe('test renderer', () => {
     }
     const root = nodeOps.createElement('div')
     render(h(App), root)
-
-    expect(serialize(root)).toEqual(
+    expect(serialize(root)).toEqual(`<div><div id="test">hello</div></div>`)
+    expect(serialize(root, 2)).toEqual(
       `<div>
   <div id="test">
     hello
index ffb81f04657609e4a41a620b2fde4c453d0be993..ee75b87e29db90c7cdfce9d97d7de71e206d01d7 100644 (file)
@@ -1,23 +1,33 @@
 import { TestElement, TestNode, NodeTypes, TestText } from './nodeOps'
 
-export function serialize(node: TestNode, depth: number = 0): string {
+export function serialize(
+  node: TestNode,
+  indent: number = 0,
+  depth: number = 0
+): string {
   if (node.type === NodeTypes.ELEMENT) {
-    return serializeElement(node, depth)
+    return serializeElement(node, indent, depth)
   } else {
-    return serializeText(node, depth)
+    return serializeText(node, indent, depth)
   }
 }
 
-function serializeElement(node: TestElement, depth: number): string {
+function serializeElement(
+  node: TestElement,
+  indent: number,
+  depth: number
+): string {
   const props = Object.keys(node.props)
     .map(key => {
       return `${key}=${JSON.stringify(node.props[key])}`
     })
     .join(' ')
   const children = node.children.length
-    ? `\n${node.children.map(c => serialize(c, depth + 1))}\n`
+    ? (indent ? `\n` : ``) +
+      node.children.map(c => serialize(c, indent, depth + 1)) +
+      (indent ? `\n` : ``)
     : ``
-  const padding = `  `.repeat(depth)
+  const padding = indent ? ` `.repeat(indent).repeat(depth) : ``
   return (
     `${padding}<${node.tag}${props ? ` ${props}` : ``}>` +
     `${children}` +
@@ -25,6 +35,7 @@ function serializeElement(node: TestElement, depth: number): string {
   )
 }
 
-function serializeText(node: TestText, depth: number): string {
-  return `  `.repeat(depth) + node.text
+function serializeText(node: TestText, indent: number, depth: number): string {
+  const padding = indent ? ` `.repeat(indent).repeat(depth) : ``
+  return padding + node.text
 }