From b26f700a8b4cf8004c799381e0b8754cdb93a8ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Wr=C3=B3blewski?= Date: Tue, 27 Jun 2023 15:14:17 +0200 Subject: [PATCH] Update JSDoc Check only valid flags --- src/helpers/string-utils.ts | 24 ++++++++++++++---------- tests/helpers/string-utils.spec.js | 8 ++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/helpers/string-utils.ts b/src/helpers/string-utils.ts index 170c3364..9b7c8d48 100644 --- a/src/helpers/string-utils.ts +++ b/src/helpers/string-utils.ts @@ -69,7 +69,7 @@ export const toRegExp = (input: RawStrPattern = ''): RegExp => { * Checks whether the string is a valid regexp flag * * @param flag string - * @returns boolean + * @returns boolean, true in case if regexp flag is valid */ const isValidRegExpFlag = (flag: string): boolean => { if (!flag) { @@ -87,15 +87,19 @@ export const toRegExp = (input: RawStrPattern = ''): RegExp => { /** * Checks whether the text string contains regexp flags * - * @param text string - * @returns boolean + * @param textRegeExp string + * @param textFlags textFlags + * @returns boolean, true if regexp contains flags */ - const hasRegExpFlags = (text: string): boolean => { + const hasRegExpFlags = (textRegeExp: string, textFlags: string): boolean => { if ( - text.startsWith(FORWARD_SLASH) - // Check if there are 2 slashes at least - && text.split(FORWARD_SLASH).length - 1 >= 2 - && flagsPart.match(/[a-zA-Z]$/) + textFlags + && textRegeExp.startsWith(FORWARD_SLASH) + && textRegeExp.endsWith(FORWARD_SLASH) + // Not a correct regex if ends with '\\/' + && !textRegeExp.endsWith('\\/') + // Only valid flags - dgimsuvy + && textFlags.match(/[dgimsuvyDGIMSUVY]$/) ) { return true; } @@ -104,7 +108,7 @@ export const toRegExp = (input: RawStrPattern = ''): RegExp => { /** * Returns the regexp flags as a string - * or empty string in case if flag is not valid + * or empty string if flag is not valid * * @param flags string * @returns string @@ -113,7 +117,7 @@ export const toRegExp = (input: RawStrPattern = ''): RegExp => { return isValidRegExpFlag(flags) ? flagsPart : ''; }; - const flags = hasRegExpFlags(input) ? getRegExpFlags(flagsPart) : ''; + const flags = hasRegExpFlags(regExpPart, flagsPart) ? getRegExpFlags(flagsPart) : ''; if ((input[0] === FORWARD_SLASH && input[input.length - 1] === FORWARD_SLASH) || flags) { const regExpInput = flags ? regExpPart : input; diff --git a/tests/helpers/string-utils.spec.js b/tests/helpers/string-utils.spec.js index 45e56f76..91a18a80 100644 --- a/tests/helpers/string-utils.spec.js +++ b/tests/helpers/string-utils.spec.js @@ -68,6 +68,14 @@ describe('Test inferValue', () => { actual: '/asdf/gmtest', expected: /\/asdf\/gmtest/, }, + { + actual: '/qwert/ggm', + expected: /\/qwert\/ggm/, + }, + { + actual: '/test\\/g', + expected: /\/test\\\/g/, + }, { actual: '', expected: defaultRegexp,