fix(compiler): should only strip leading newline directly in pre tag

This commit is contained in:
Evan You 2020-04-08 16:44:32 -04:00
parent 84440780f9
commit be666ebd59
2 changed files with 18 additions and 6 deletions

View File

@ -223,7 +223,7 @@ function parseChildren(
}
}
}
} else {
} else if (parent && context.options.isPreTag(parent.tag)) {
// remove leading newline per html spec
// https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element
const first = nodes[0]

View File

@ -141,12 +141,24 @@ describe('DOM parser', () => {
// #908
test('<pre> tag should remove leading newline', () => {
const rawText = `\nhello`
const rawText = `\nhello<div>\nbye</div>`
const ast = parse(`<pre>${rawText}</pre>`, parserOptions)
expect((ast.children[0] as ElementNode).children[0]).toMatchObject({
type: NodeTypes.TEXT,
content: rawText.slice(1)
})
expect((ast.children[0] as ElementNode).children).toMatchObject([
{
type: NodeTypes.TEXT,
content: `hello`
},
{
type: NodeTypes.ELEMENT,
children: [
{
type: NodeTypes.TEXT,
// should not remove the leading newline for nested elements
content: `\nbye`
}
]
}
])
})
})