From bfd23b02d97d2c8de23be3a03341f9dcba86d7ee Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Thu, 20 Jul 2023 06:46:12 -0400 Subject: [PATCH] `command.ts` generalize substitutions Looks better than repeating the same thing over and over... --- packages/core/src/command.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/core/src/command.ts b/packages/core/src/command.ts index 2796fce9..5ce2dbe6 100644 --- a/packages/core/src/command.ts +++ b/packages/core/src/command.ts @@ -77,18 +77,15 @@ class Command { } } +function escapeChar(ch: string): string { + return ch.replace(/[%\r\n:,]/g, c => + '%' + c.charCodeAt(0).toString(16).toUpperCase().padStart(2, '0')) +} + function escapeData(s: any): string { - return toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') + return toCommandValue(s).replace(/%\r\n/g, escapeChar) } function escapeProperty(s: any): string { - return toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C') + return toCommandValue(s).replace(/[%\r\n:,]/g, escapeChar) }