fix(compiler-sfc): template with alt lang should be parsed as raw text
fix #1120
This commit is contained in:
parent
e58beecc97
commit
d10835aee7
@ -106,6 +106,16 @@ h1 { color: red }
|
||||
expect(descriptor.template!.content).toBe(content)
|
||||
})
|
||||
|
||||
// #1120
|
||||
test('alternative template lang should be treated as plain text', () => {
|
||||
const content = `p(v-if="1 < 2") test`
|
||||
const { descriptor, errors } = parse(
|
||||
`<template lang="pug">` + content + `</template>`
|
||||
)
|
||||
expect(errors.length).toBe(0)
|
||||
expect(descriptor.template!.content).toBe(content)
|
||||
})
|
||||
|
||||
test('error tolerance', () => {
|
||||
const { errors } = parse(`<template>`)
|
||||
expect(errors.length).toBe(1)
|
||||
|
@ -96,10 +96,20 @@ export function parse(
|
||||
isNativeTag: () => true,
|
||||
// preserve all whitespaces
|
||||
isPreTag: () => true,
|
||||
getTextMode: ({ tag }, parent) => {
|
||||
getTextMode: ({ tag, props }, parent) => {
|
||||
// all top level elements except <template> are parsed as raw text
|
||||
// containers
|
||||
if (!parent && tag !== 'template') {
|
||||
if (
|
||||
(!parent && tag !== 'template') ||
|
||||
// <template lang="xxx"> should also be treated as raw text
|
||||
props.some(
|
||||
p =>
|
||||
p.type === NodeTypes.ATTRIBUTE &&
|
||||
p.name === 'lang' &&
|
||||
p.value &&
|
||||
p.value.content !== 'html'
|
||||
)
|
||||
) {
|
||||
return TextModes.RAWTEXT
|
||||
} else {
|
||||
return TextModes.DATA
|
||||
|
Loading…
Reference in New Issue
Block a user