mirror of
https://github.com/vuejs/vue.git
synced 2024-11-22 04:39:46 +00:00
fix(sfc): avoid deindent when pad option is specified (#7647)
This commit is contained in:
parent
76fd45c9fd
commit
9d2f9a034f
@ -83,11 +83,15 @@ export function parseComponent (
|
||||
function end (tag: string, start: number) {
|
||||
if (depth === 1 && currentBlock) {
|
||||
currentBlock.end = start
|
||||
let text = deindent(content.slice(currentBlock.start, currentBlock.end))
|
||||
let text = content.slice(currentBlock.start, currentBlock.end)
|
||||
// pad content so that linters and pre-processors can output correct
|
||||
// line numbers in errors and warnings
|
||||
if (currentBlock.type !== 'template' && options.pad) {
|
||||
if (options.pad) {
|
||||
text = padContent(currentBlock, options.pad) + text
|
||||
} else {
|
||||
// avoid to deindent if pad option is specified
|
||||
// to retain original source position.
|
||||
text = deindent(text)
|
||||
}
|
||||
currentBlock.content = text
|
||||
currentBlock = null
|
||||
|
@ -71,21 +71,42 @@ describe('Single File Component parser', () => {
|
||||
const padLine = parseComponent(content.trim(), { pad: 'line' })
|
||||
const padSpace = parseComponent(content.trim(), { pad: 'space' })
|
||||
|
||||
expect(padDefault.script.content).toBe(Array(3 + 1).join('//\n') + '\nexport default {}\n')
|
||||
expect(padDefault.styles[0].content).toBe(Array(6 + 1).join('\n') + '\nh1 { color: red }\n')
|
||||
expect(padLine.script.content).toBe(Array(3 + 1).join('//\n') + '\nexport default {}\n')
|
||||
expect(padLine.styles[0].content).toBe(Array(6 + 1).join('\n') + '\nh1 { color: red }\n')
|
||||
expect(padDefault.template.content).toBe(Array(1).join('\n') + `
|
||||
<div></div>
|
||||
`)
|
||||
expect(padDefault.script.content).toBe(Array(3 + 1).join('//\n') + `
|
||||
export default {}
|
||||
`)
|
||||
expect(padDefault.styles[0].content).toBe(Array(6 + 1).join('\n') + `
|
||||
h1 { color: red }
|
||||
`)
|
||||
expect(padLine.template.content).toBe(Array(1).join('\n') + `
|
||||
<div></div>
|
||||
`)
|
||||
expect(padLine.script.content).toBe(Array(3 + 1).join('//\n') + `
|
||||
export default {}
|
||||
`)
|
||||
expect(padLine.styles[0].content).toBe(Array(6 + 1).join('\n') + `
|
||||
h1 { color: red }
|
||||
`)
|
||||
expect(padSpace.template.content).toBe(`<template>`.replace(/./g, ' ') + `
|
||||
<div></div>
|
||||
`)
|
||||
expect(padSpace.script.content).toBe(`<template>
|
||||
<div></div>
|
||||
</template>
|
||||
<script>`.replace(/./g, ' ') + '\nexport default {}\n')
|
||||
<script>`.replace(/./g, ' ') + `
|
||||
export default {}
|
||||
`)
|
||||
expect(padSpace.styles[0].content).toBe(`<template>
|
||||
<div></div>
|
||||
</template>
|
||||
<script>
|
||||
export default {}
|
||||
</script>
|
||||
<style>`.replace(/./g, ' ') + '\nh1 { color: red }\n')
|
||||
<style>`.replace(/./g, ' ') + `
|
||||
h1 { color: red }
|
||||
`)
|
||||
})
|
||||
|
||||
it('should handle template blocks with lang as special text', () => {
|
||||
|
Loading…
Reference in New Issue
Block a user