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)
|
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', () => {
|
test('error tolerance', () => {
|
||||||
const { errors } = parse(`<template>`)
|
const { errors } = parse(`<template>`)
|
||||||
expect(errors.length).toBe(1)
|
expect(errors.length).toBe(1)
|
||||||
|
@ -96,10 +96,20 @@ export function parse(
|
|||||||
isNativeTag: () => true,
|
isNativeTag: () => true,
|
||||||
// preserve all whitespaces
|
// preserve all whitespaces
|
||||||
isPreTag: () => true,
|
isPreTag: () => true,
|
||||||
getTextMode: ({ tag }, parent) => {
|
getTextMode: ({ tag, props }, parent) => {
|
||||||
// all top level elements except <template> are parsed as raw text
|
// all top level elements except <template> are parsed as raw text
|
||||||
// containers
|
// 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
|
return TextModes.RAWTEXT
|
||||||
} else {
|
} else {
|
||||||
return TextModes.DATA
|
return TextModes.DATA
|
||||||
|
Loading…
Reference in New Issue
Block a user