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

fix #3479
This commit is contained in:
HcySunYang 2021-03-26 03:53:03 +08:00 committed by GitHub
parent 6e88156934
commit b4b82159e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View File

@ -1812,6 +1812,16 @@ foo
`\n foo bar ` `\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', () => { describe('Errors', () => {

View File

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