Skip to content

Commit

Permalink
fix(compiler-core): keep whitespaces between interpolation and comment (
Browse files Browse the repository at this point in the history
  • Loading branch information
rudyxu1102 committed Nov 8, 2022
1 parent 28a4fc0 commit 4887618
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
11 changes: 11 additions & 0 deletions packages/compiler-core/__tests__/parse.spec.ts
Expand Up @@ -1980,6 +1980,17 @@ foo
expect(ast.children[2].type).toBe(NodeTypes.INTERPOLATION)
})

it('should NOT remove whitespaces w/ newline between interpolation and comment', () => {
const ast = parse(`<!-- foo --> \n {{msg}}`)
expect(ast.children.length).toBe(3)
expect(ast.children[0].type).toBe(NodeTypes.COMMENT)
expect(ast.children[1]).toMatchObject({
type: NodeTypes.TEXT,
content: ' '
})
expect(ast.children[2].type).toBe(NodeTypes.INTERPOLATION)
})

it('should NOT remove whitespaces w/o newline between elements', () => {
const ast = parse(`<div/> <div/> <div/>`)
expect(ast.children.length).toBe(5)
Expand Down
11 changes: 8 additions & 3 deletions packages/compiler-core/src/parse.ts
Expand Up @@ -264,14 +264,19 @@ function parseChildren(
const next = nodes[i + 1]
// Remove if:
// - the whitespace is the first or last node, or:
// - (condense mode) the whitespace is adjacent to a comment, or:
// - (condense mode) the whitespace is between twos comments, or:
// - (condense mode) the whitespace is between comment and element, or:
// - (condense mode) the whitespace is between two elements AND contains newline
if (
!prev ||
!next ||
(shouldCondense &&
(prev.type === NodeTypes.COMMENT ||
next.type === NodeTypes.COMMENT ||
((prev.type === NodeTypes.COMMENT &&
next.type === NodeTypes.COMMENT) ||
(prev.type === NodeTypes.COMMENT &&
next.type === NodeTypes.ELEMENT) ||
(prev.type === NodeTypes.ELEMENT &&
next.type === NodeTypes.COMMENT) ||
(prev.type === NodeTypes.ELEMENT &&
next.type === NodeTypes.ELEMENT &&
/[\r\n]/.test(node.content))))
Expand Down

0 comments on commit 4887618

Please sign in to comment.