Преглед на файлове

fix(compiler-core): should not condense whitespace in RCDATA text mode (#3482)

fix #3479
HcySunYang преди 5 години
родител
ревизия
b4b82159e2
променени са 2 файла, в които са добавени 11 реда и са изтрити 1 реда
  1. 10 0
      packages/compiler-core/__tests__/parse.spec.ts
  2. 1 1
      packages/compiler-core/src/parse.ts

+ 10 - 0
packages/compiler-core/__tests__/parse.spec.ts

@@ -1812,6 +1812,16 @@ foo
         `\n  foo  bar  `
       )
     })
+
+    it('should NOT condense whitespaces in RCDATA text mode', () => {
+      const ast = baseParse(`<textarea>Text:\n   foo</textarea>`, {
+        getTextMode: ({ tag }) =>
+          tag === 'textarea' ? TextModes.RCDATA : TextModes.DATA
+      })
+      const preElement = ast.children[0] as ElementNode
+      expect(preElement.children).toHaveLength(1)
+      expect((preElement.children[0] as TextNode).content).toBe(`Text:\n   foo`)
+    })
   })
 
   describe('Errors', () => {

+ 1 - 1
packages/compiler-core/src/parse.ts

@@ -205,7 +205,7 @@ function parseChildren(
   // Whitespace management for more efficient output
   // (same as v2 whitespace: 'condense')
   let removedWhitespace = false
-  if (mode !== TextModes.RAWTEXT) {
+  if (mode !== TextModes.RAWTEXT && mode !== TextModes.RCDATA) {
     for (let i = 0; i < nodes.length; i++) {
       const node = nodes[i]
       if (!context.inPre && node.type === NodeTypes.TEXT) {