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)
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))))