From f4a2e1a84b3b5aa60c616d633f38718fa2c85ba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Mon, 29 Apr 2024 11:38:54 +0200 Subject: [PATCH] feat(formatter): add replace with regex action --- .../src/apps/formatter/actions/text/index.js | 3 ++ .../text/transformers/replace-with-regex.js | 10 +++++++ .../list-transform-options/index.js | 2 ++ .../text/replace-with-regex.js | 29 +++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 packages/backend/src/apps/formatter/actions/text/transformers/replace-with-regex.js create mode 100644 packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/replace-with-regex.js diff --git a/packages/backend/src/apps/formatter/actions/text/index.js b/packages/backend/src/apps/formatter/actions/text/index.js index d3f0980a..7b8564f1 100644 --- a/packages/backend/src/apps/formatter/actions/text/index.js +++ b/packages/backend/src/apps/formatter/actions/text/index.js @@ -8,6 +8,7 @@ import htmlToMarkdown from './transformers/html-to-markdown.js'; import lowercase from './transformers/lowercase.js'; import markdownToHtml from './transformers/markdown-to-html.js'; import pluralize from './transformers/pluralize.js'; +import replaceWithRegEx from './transformers/replace-with-regex.js'; import replace from './transformers/replace.js'; import stringToBase64 from './transformers/string-to-base64.js'; import trimWhitespace from './transformers/trim-whitespace.js'; @@ -22,6 +23,7 @@ const transformers = { lowercase, markdownToHtml, pluralize, + replaceWithRegEx, replace, stringToBase64, trimWhitespace, @@ -49,6 +51,7 @@ export default defineAction({ { label: 'Extract Number', value: 'extractNumber' }, { label: 'Lowercase', value: 'lowercase' }, { label: 'Pluralize', value: 'pluralize' }, + { label: 'Replace with RegEx', value: 'replaceWithRegEx' }, { label: 'Replace', value: 'replace' }, { label: 'String to Base64', value: 'stringToBase64' }, { label: 'Trim Whitespace', value: 'trimWhitespace' }, diff --git a/packages/backend/src/apps/formatter/actions/text/transformers/replace-with-regex.js b/packages/backend/src/apps/formatter/actions/text/transformers/replace-with-regex.js new file mode 100644 index 00000000..39f412a9 --- /dev/null +++ b/packages/backend/src/apps/formatter/actions/text/transformers/replace-with-regex.js @@ -0,0 +1,10 @@ +const replaceWithRegEx = ($) => { + const input = $.step.parameters.input; + + const find = new RegExp($.step.parameters.find); + const replace = $.step.parameters.replace; + + return input.replace(find, replace); +}; + +export default replaceWithRegEx; diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js index f4aab425..0ceaa403 100644 --- a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js @@ -6,6 +6,7 @@ import htmlToMarkdown from './text/html-to-markdown.js'; import lowercase from './text/lowercase.js'; import markdownToHtml from './text/markdown-to-html.js'; import pluralize from './text/pluralize.js'; +import replaceWithRegEx from './text/replace-with-regex.js'; import replace from './text/replace.js'; import stringToBase64 from './text/string-to-base64.js'; import trimWhitespace from './text/trim-whitespace.js'; @@ -25,6 +26,7 @@ const options = { lowercase, markdownToHtml, pluralize, + replaceWithRegEx, replace, stringToBase64, trimWhitespace, diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/replace-with-regex.js b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/replace-with-regex.js new file mode 100644 index 00000000..8a3e4ae7 --- /dev/null +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/replace-with-regex.js @@ -0,0 +1,29 @@ +const replaceWithRegEx = [ + { + label: 'Input', + key: 'input', + type: 'string', + required: true, + description: + 'Text that you want to search for and replace values with regex.', + variables: true, + }, + { + label: 'Find', + key: 'find', + type: 'string', + required: true, + description: 'RegEx that will be searched for.', + variables: true, + }, + { + label: 'Replace', + key: 'replace', + type: 'string', + required: false, + description: 'Text that will replace the found regex.', + variables: true, + }, +]; + +export default replaceWithRegEx;