From e19340f1e008e1c6018b5593b51532241c1db997 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Fri, 1 Sep 2023 17:51:23 +0200 Subject: [PATCH] feat(formatter): Add replace transformer to text action --- .../src/apps/formatter/actions/text/index.ts | 3 ++ .../actions/text/transformers/replace.ts | 12 ++++++++ .../list-transform-options/index.ts | 2 ++ .../list-transform-options/options/replace.ts | 28 +++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 packages/backend/src/apps/formatter/actions/text/transformers/replace.ts create mode 100644 packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/options/replace.ts diff --git a/packages/backend/src/apps/formatter/actions/text/index.ts b/packages/backend/src/apps/formatter/actions/text/index.ts index 6c067d02..3065a983 100644 --- a/packages/backend/src/apps/formatter/actions/text/index.ts +++ b/packages/backend/src/apps/formatter/actions/text/index.ts @@ -8,6 +8,7 @@ import extractNumber from './transformers/extract-number'; import lowercase from './transformers/lowercase'; import pluralize from './transformers/pluralize'; import trimWhitespace from './transformers/trim-whitespace'; +import replace from './transformers/replace'; const transformers = { capitalize, @@ -19,6 +20,7 @@ const transformers = { lowercase, pluralize, trimWhitespace, + replace, }; export default defineAction({ @@ -44,6 +46,7 @@ export default defineAction({ { label: 'Lowercase', value: 'lowercase' }, { label: 'Pluralize', value: 'pluralize' }, { label: 'Trim Whitespace', value: 'trimWhitespace' }, + { label: 'Replace', value: 'replace' }, ], additionalFields: { type: 'query', diff --git a/packages/backend/src/apps/formatter/actions/text/transformers/replace.ts b/packages/backend/src/apps/formatter/actions/text/transformers/replace.ts new file mode 100644 index 00000000..2aefeb03 --- /dev/null +++ b/packages/backend/src/apps/formatter/actions/text/transformers/replace.ts @@ -0,0 +1,12 @@ +import { IGlobalVariable } from '@automatisch/types'; + +const replace = ($: IGlobalVariable) => { + const input = $.step.parameters.input as string; + + const find = $.step.parameters.find as string; + const replace = $.step.parameters.replace as string; + + return input.replaceAll(find, replace); +}; + +export default replace; diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts index 2359fa5a..1cc8a1ee 100644 --- a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts @@ -8,6 +8,7 @@ import extractNumber from './options/extract-number'; import lowercase from './options/lowercase'; import pluralize from './options/pluralize'; import trimWhitespace from './options/trim-whitespace'; +import replace from './options/replace'; const options: IJSONObject = { capitalize, @@ -19,6 +20,7 @@ const options: IJSONObject = { lowercase, pluralize, trimWhitespace, + replace, }; export default { diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/options/replace.ts b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/options/replace.ts new file mode 100644 index 00000000..d9452500 --- /dev/null +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/options/replace.ts @@ -0,0 +1,28 @@ +const replace = [ + { + label: 'Input', + key: 'input', + type: 'string' as const, + required: true, + description: 'Text that you want to search for and replace values.', + variables: true, + }, + { + label: 'Find', + key: 'find', + type: 'string' as const, + required: true, + description: 'Text that will be searched for.', + variables: true, + }, + { + label: 'Replace', + key: 'replace', + type: 'string' as const, + required: false, + description: 'Text that will replace the found text.', + variables: true, + }, +]; + +export default replace;