diff --git a/src/openApi/v2/parser/escapeDescription.spec.ts b/src/openApi/v2/parser/escapeDescription.spec.ts new file mode 100644 index 00000000..d4aae6d7 --- /dev/null +++ b/src/openApi/v2/parser/escapeDescription.spec.ts @@ -0,0 +1,13 @@ +import { escapeDescription } from './escapeDescription'; + +describe('escapeDescription', () => { + it('should escape', () => { + 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 new file mode 100644 index 00000000..087abf8a --- /dev/null +++ b/src/openApi/v2/parser/escapeDescription.ts @@ -0,0 +1,3 @@ +export function escapeDescription(value: string): string { + return value.replace(/([^\\])`/g, '$1\\`'); +} diff --git a/src/openApi/v2/parser/getOperationErrors.ts b/src/openApi/v2/parser/getOperationErrors.ts index 9703f91b..31a742c8 100644 --- a/src/openApi/v2/parser/getOperationErrors.ts +++ b/src/openApi/v2/parser/getOperationErrors.ts @@ -1,5 +1,6 @@ import type { OperationError } from '../../../client/interfaces/OperationError'; import type { OperationResponse } from '../../../client/interfaces/OperationResponse'; +import { escapeDescription } from './escapeDescription'; export function getOperationErrors(operationResponses: OperationResponse[]): OperationError[] { return operationResponses @@ -8,6 +9,6 @@ export function getOperationErrors(operationResponses: OperationResponse[]): Ope }) .map(response => ({ code: response.code, - description: response.description!, + description: escapeDescription(response.description!), })); } diff --git a/src/openApi/v3/parser/escapeDescription.spec.ts b/src/openApi/v3/parser/escapeDescription.spec.ts new file mode 100644 index 00000000..d4aae6d7 --- /dev/null +++ b/src/openApi/v3/parser/escapeDescription.spec.ts @@ -0,0 +1,13 @@ +import { escapeDescription } from './escapeDescription'; + +describe('escapeDescription', () => { + it('should escape', () => { + 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 new file mode 100644 index 00000000..087abf8a --- /dev/null +++ b/src/openApi/v3/parser/escapeDescription.ts @@ -0,0 +1,3 @@ +export function escapeDescription(value: string): string { + return value.replace(/([^\\])`/g, '$1\\`'); +} diff --git a/src/openApi/v3/parser/getOperationErrors.ts b/src/openApi/v3/parser/getOperationErrors.ts index 9703f91b..31a742c8 100644 --- a/src/openApi/v3/parser/getOperationErrors.ts +++ b/src/openApi/v3/parser/getOperationErrors.ts @@ -1,5 +1,6 @@ import type { OperationError } from '../../../client/interfaces/OperationError'; import type { OperationResponse } from '../../../client/interfaces/OperationResponse'; +import { escapeDescription } from './escapeDescription'; export function getOperationErrors(operationResponses: OperationResponse[]): OperationError[] { return operationResponses @@ -8,6 +9,6 @@ export function getOperationErrors(operationResponses: OperationResponse[]): Ope }) .map(response => ({ code: response.code, - description: response.description!, + description: escapeDescription(response.description!), })); }