From 2fcd655b7d1a13e5bb30987ddadcc0202617217a Mon Sep 17 00:00:00 2001 From: Raman Savitski Date: Fri, 27 Nov 2020 19:43:37 +0300 Subject: [PATCH] Backquote/backtick symbol (`) is not escaped correctly --- src/openApi/v2/parser/escapeDescription.spec.ts | 8 ++++++-- src/openApi/v2/parser/escapeDescription.ts | 2 +- src/openApi/v3/parser/escapeDescription.spec.ts | 8 ++++++-- src/openApi/v3/parser/escapeDescription.ts | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/openApi/v2/parser/escapeDescription.spec.ts b/src/openApi/v2/parser/escapeDescription.spec.ts index 1196a813..d4aae6d7 100644 --- a/src/openApi/v2/parser/escapeDescription.spec.ts +++ b/src/openApi/v2/parser/escapeDescription.spec.ts @@ -2,8 +2,12 @@ import { escapeDescription } from './escapeDescription'; describe('escapeDescription', () => { it('should escape', () => { - expect(escapeDescription('')).toEqual(''); - expect(escapeDescription('fooBar')).toEqual('fooBar'); expect(escapeDescription('foo `test` bar')).toEqual('foo \\`test\\` bar'); }); + + it('should not escape', () => { + expect(escapeDescription('')).toEqual(''); + expect(escapeDescription('fooBar')).toEqual('fooBar'); + expect(escapeDescription('foo \\`test\\` bar')).toEqual('foo \\`test\\` bar'); + }); }); diff --git a/src/openApi/v2/parser/escapeDescription.ts b/src/openApi/v2/parser/escapeDescription.ts index fc87533a..087abf8a 100644 --- a/src/openApi/v2/parser/escapeDescription.ts +++ b/src/openApi/v2/parser/escapeDescription.ts @@ -1,3 +1,3 @@ export function escapeDescription(value: string): string { - return value.replace(/`/g, '\\`'); + return value.replace(/([^\\])`/g, '$1\\`'); } diff --git a/src/openApi/v3/parser/escapeDescription.spec.ts b/src/openApi/v3/parser/escapeDescription.spec.ts index 1196a813..d4aae6d7 100644 --- a/src/openApi/v3/parser/escapeDescription.spec.ts +++ b/src/openApi/v3/parser/escapeDescription.spec.ts @@ -2,8 +2,12 @@ import { escapeDescription } from './escapeDescription'; describe('escapeDescription', () => { it('should escape', () => { - expect(escapeDescription('')).toEqual(''); - expect(escapeDescription('fooBar')).toEqual('fooBar'); expect(escapeDescription('foo `test` bar')).toEqual('foo \\`test\\` bar'); }); + + it('should not escape', () => { + expect(escapeDescription('')).toEqual(''); + expect(escapeDescription('fooBar')).toEqual('fooBar'); + expect(escapeDescription('foo \\`test\\` bar')).toEqual('foo \\`test\\` bar'); + }); }); diff --git a/src/openApi/v3/parser/escapeDescription.ts b/src/openApi/v3/parser/escapeDescription.ts index fc87533a..087abf8a 100644 --- a/src/openApi/v3/parser/escapeDescription.ts +++ b/src/openApi/v3/parser/escapeDescription.ts @@ -1,3 +1,3 @@ export function escapeDescription(value: string): string { - return value.replace(/`/g, '\\`'); + return value.replace(/([^\\])`/g, '$1\\`'); }