[fix]: strip leading newline characters after 'pre' elements

Close #7264
pull/7269/head
Emil Sandstø 5 years ago
parent 39f0d8cc31
commit 1dccec7089

1
package-lock.json generated

@ -5,6 +5,7 @@
"requires": true,
"packages": {
"": {
"name": "svelte",
"version": "3.46.4",
"license": "MIT",
"devDependencies": {

@ -84,7 +84,7 @@ export default function tag(parser: Parser) {
parser.current().children.length
) {
parser.error(
parser_errors.invalid_element_content(slug, name),
parser_errors.invalid_element_content(slug, name),
parser.current().children[0].start
);
}
@ -197,6 +197,14 @@ export default function tag(parser: Parser) {
parser.eat('>', true);
// A leading newline character immediately following the pre element start tag is stripped
// See spec: https://www.w3.org/TR/2011/WD-html5-20110113/grouping-content.html#the-pre-element
if (!is_closing_tag && name === 'pre') {
if (!parser.eat('\r\n')) {
parser.eat('\n');
}
}
if (self_closing) {
// don't push self-closing elements onto the stack
element.end = parser.index;
@ -258,7 +266,7 @@ function read_tag_name(parser: Parser) {
const match = fuzzymatch(name.slice(7), valid_meta_tags);
parser.error(
parser_errors.invalid_tag_name_svelte_element(valid_meta_tags, match),
parser_errors.invalid_tag_name_svelte_element(valid_meta_tags, match),
start
);
}

@ -0,0 +1,25 @@
{
"html": {
"start": 0,
"end": 17,
"type": "Fragment",
"children": [
{
"start": 0,
"end": 17,
"type": "Element",
"name": "pre",
"attributes": [],
"children": [
{
"start": 6,
"end": 11,
"type": "Text",
"raw": "test\n",
"data": "test\n"
}
]
}
]
}
}
Loading…
Cancel
Save