From: Evan You Date: Wed, 8 Apr 2020 21:33:07 +0000 (-0400) Subject: fix(compiler): should not condense   X-Git-Tag: v3.0.0-alpha.12~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c17535a470501f7f4ec3747cd3de25d9169c505;p=thirdparty%2Fvuejs%2Fcore.git fix(compiler): should not condense   fix #945 --- diff --git a/packages/compiler-core/src/parse.ts b/packages/compiler-core/src/parse.ts index 1fbd7d5c24..bb4e3e4a6a 100644 --- a/packages/compiler-core/src/parse.ts +++ b/packages/compiler-core/src/parse.ts @@ -194,7 +194,7 @@ function parseChildren( for (let i = 0; i < nodes.length; i++) { const node = nodes[i] if (node.type === NodeTypes.TEXT) { - if (!node.content.trim()) { + if (!/[^\t\r\n\f ]/.test(node.content)) { const prev = nodes[i - 1] const next = nodes[i + 1] // If: @@ -219,7 +219,7 @@ function parseChildren( node.content = ' ' } } else { - node.content = node.content.replace(/\s+/g, ' ') + node.content = node.content.replace(/[\t\r\n\f ]+/g, ' ') } } } diff --git a/packages/compiler-dom/__tests__/parse.spec.ts b/packages/compiler-dom/__tests__/parse.spec.ts index 8e88d14954..73a27e205d 100644 --- a/packages/compiler-dom/__tests__/parse.spec.ts +++ b/packages/compiler-dom/__tests__/parse.spec.ts @@ -8,9 +8,9 @@ import { InterpolationNode } from '@vue/compiler-core' import { - parserOptionsMinimal as parserOptions, + parserOptionsStandard as parserOptions, DOMNamespaces -} from '../src/parserOptionsMinimal' +} from '../src/parserOptionsStandard' describe('DOM parser', () => { describe('Text', () => { @@ -160,6 +160,16 @@ describe('DOM parser', () => { } ]) }) + + // #945 + test('  should not be condensed', () => { + const nbsp = String.fromCharCode(160) + const ast = parse(`foo  bar`, parserOptions) + expect(ast.children[0]).toMatchObject({ + type: NodeTypes.TEXT, + content: `foo${nbsp}${nbsp}bar` + }) + }) }) describe('Interpolation', () => { diff --git a/packages/compiler-dom/src/parserOptionsStandard.ts b/packages/compiler-dom/src/parserOptionsStandard.ts index 0fe9bfded0..b0bb70e4e9 100644 --- a/packages/compiler-dom/src/parserOptionsStandard.ts +++ b/packages/compiler-dom/src/parserOptionsStandard.ts @@ -2,6 +2,8 @@ import { ParserOptions } from '@vue/compiler-core' import { parserOptionsMinimal } from './parserOptionsMinimal' import namedCharacterReferences from './namedChars.json' +export { DOMNamespaces } from './parserOptionsMinimal' + export const parserOptionsStandard: ParserOptions = { // extends the minimal options with more spec-compliant overrides ...parserOptionsMinimal,