From 7a12825d9e98fba3aa58e4df13d889fdd1a2aa49 Mon Sep 17 00:00:00 2001 From: aaron roworth Date: Wed, 23 Aug 2023 10:44:47 +1000 Subject: [PATCH 1/3] ON-34235 # added `formElementsService.fixElementName()` --- CHANGELOG.md | 4 ++++ src/formElementsService.ts | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad8a651a..11906e87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Added + +- `formElementsService.fixElementName()` + ## [4.0.0] - 2023-07-26 ### Added diff --git a/src/formElementsService.ts b/src/formElementsService.ts index b575547a..70cc4a1e 100644 --- a/src/formElementsService.ts +++ b/src/formElementsService.ts @@ -299,6 +299,19 @@ function determineIsInfoPage(form: FormTypes.Form): boolean { return !foundInputElement } +/** + * Remove invalid characters from a form element name. + * + * @param elementName + * @returns + */ +const fixElementName = (elementName: string) => { + return elementName + .replace(/[^-\w\s]/g, '') + .replace(/\s/g, '_') + .trim() +} + export { forEachFormElement, forEachFormElementWithOptions, @@ -308,4 +321,5 @@ export { ElementWYSIWYGRegex, matchElementsTagRegex, determineIsInfoPage, + fixElementName } From b1e3eb5dcf5e4ad4167243f79cf0004f48706ddb Mon Sep 17 00:00:00 2001 From: aaron roworth Date: Wed, 23 Aug 2023 10:50:45 +1000 Subject: [PATCH 2/3] added regex comment --- src/formElementsService.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/formElementsService.ts b/src/formElementsService.ts index 70cc4a1e..ca45405d 100644 --- a/src/formElementsService.ts +++ b/src/formElementsService.ts @@ -306,6 +306,7 @@ function determineIsInfoPage(form: FormTypes.Form): boolean { * @returns */ const fixElementName = (elementName: string) => { + // removes invalid characters/spaces and replaces with '' or _ return elementName .replace(/[^-\w\s]/g, '') .replace(/\s/g, '_') From 0afcde66befc041498ffcfc3b657c685df79f6ac Mon Sep 17 00:00:00 2001 From: aaron roworth Date: Wed, 23 Aug 2023 10:57:14 +1000 Subject: [PATCH 3/3] better regex explanation --- src/formElementsService.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/formElementsService.ts b/src/formElementsService.ts index ca45405d..a18bab15 100644 --- a/src/formElementsService.ts +++ b/src/formElementsService.ts @@ -306,7 +306,8 @@ function determineIsInfoPage(form: FormTypes.Form): boolean { * @returns */ const fixElementName = (elementName: string) => { - // removes invalid characters/spaces and replaces with '' or _ + // removes characters that aren't letters, numbers, underscores or dashes + // replaces empty spaces with _ return elementName .replace(/[^-\w\s]/g, '') .replace(/\s/g, '_')