From fa688577e0aa5002a24f3d7dd1e58ab3a88abece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=A7=E6=AF=85?= Date: Wed, 11 Nov 2020 16:13:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=A4=9A=E8=A1=8C=E6=96=87=E6=9C=AC=E5=9C=A8=E5=87=BA=E7=A0=81?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E7=94=9F=E6=88=90=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E6=98=AF=E6=97=A0=E6=95=88=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code-generator/src/utils/compositeType.ts | 3 ++- .../test/utils/compositeType.test.ts | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 packages/code-generator/test/utils/compositeType.test.ts diff --git a/packages/code-generator/src/utils/compositeType.ts b/packages/code-generator/src/utils/compositeType.ts index 81c0a1c81..cc8342777 100644 --- a/packages/code-generator/src/utils/compositeType.ts +++ b/packages/code-generator/src/utils/compositeType.ts @@ -34,7 +34,8 @@ function generateObject(value: CompositeObject, scope: IScope, options: Composit } function generateString(value: string): string { - return `'${value}'`; + // 有的字符串里面会有特殊字符,比如换行或引号之类的,这里我们借助 JSON 的字符串转义功能来做下转义并加上双引号 + return JSON.stringify(value); } function generateNumber(value: number): string { diff --git a/packages/code-generator/test/utils/compositeType.test.ts b/packages/code-generator/test/utils/compositeType.test.ts new file mode 100644 index 000000000..59ce23234 --- /dev/null +++ b/packages/code-generator/test/utils/compositeType.test.ts @@ -0,0 +1,20 @@ +import test from 'ava'; +import { generateCompositeType } from '../../src/utils/compositeType'; +import Scope from '../../src/utils/Scope'; + +test('single line string', (t) => { + t.is(generateCompositeType('ab c', Scope.createRootScope()), '"ab c"'); +}); + +test('multi line string', (t) => { + t.is(generateCompositeType('a\nb\nc', Scope.createRootScope()), '"a\\nb\\nc"'); +}); + + +test('string with single quote', (t) => { + t.is(generateCompositeType('a\'bc', Scope.createRootScope()), '"a\'bc"'); +}); + +test('string with double quote', (t) => { + t.is(generateCompositeType('a"bc', Scope.createRootScope()), '"a\\"bc"'); +});