feat(formatter/text): add regex support in replace transfomer
This commit is contained in:
@@ -1,8 +1,26 @@
|
|||||||
const replace = ($) => {
|
const replace = ($) => {
|
||||||
const input = $.step.parameters.input;
|
const input = $.step.parameters.input;
|
||||||
|
|
||||||
const find = $.step.parameters.find;
|
const find = $.step.parameters.find;
|
||||||
const replace = $.step.parameters.replace;
|
const replace = $.step.parameters.replace;
|
||||||
|
const useRegex = $.step.parameters.useRegex;
|
||||||
|
|
||||||
|
if (useRegex) {
|
||||||
|
const ignoreCase = $.step.parameters.ignoreCase;
|
||||||
|
|
||||||
|
const flags = [ignoreCase && 'i', 'g'].filter(Boolean).join('');
|
||||||
|
|
||||||
|
const timeoutId = setTimeout(() => {
|
||||||
|
$.execution.exit();
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
const regex = new RegExp(find, flags);
|
||||||
|
|
||||||
|
const replacedValue = input.replaceAll(regex, replace);
|
||||||
|
|
||||||
|
clearTimeout(timeoutId);
|
||||||
|
|
||||||
|
return replacedValue;
|
||||||
|
}
|
||||||
|
|
||||||
return input.replaceAll(find, replace);
|
return input.replaceAll(find, replace);
|
||||||
};
|
};
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
import listTransformOptions from './list-transform-options/index.js';
|
import listTransformOptions from './list-transform-options/index.js';
|
||||||
|
import listReplaceRegexOptions from './list-replace-regex-options/index.js';
|
||||||
|
|
||||||
export default [listTransformOptions];
|
export default [listTransformOptions, listReplaceRegexOptions];
|
||||||
|
@@ -0,0 +1,23 @@
|
|||||||
|
export default {
|
||||||
|
name: 'List replace regex options',
|
||||||
|
key: 'listReplaceRegexOptions',
|
||||||
|
|
||||||
|
async run($) {
|
||||||
|
if (!$.step.parameters.useRegex) return [];
|
||||||
|
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: 'Ignore case',
|
||||||
|
key: 'ignoreCase',
|
||||||
|
type: 'dropdown',
|
||||||
|
required: true,
|
||||||
|
description: 'Ignore case sensitivity.',
|
||||||
|
variables: true,
|
||||||
|
options: [
|
||||||
|
{ label: 'Yes', value: true },
|
||||||
|
{ label: 'No', value: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
};
|
@@ -23,6 +23,33 @@ const replace = [
|
|||||||
description: 'Text that will replace the found text.',
|
description: 'Text that will replace the found text.',
|
||||||
variables: true,
|
variables: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Use Regular Expression',
|
||||||
|
key: 'useRegex',
|
||||||
|
type: 'dropdown',
|
||||||
|
required: true,
|
||||||
|
description: 'Use regex to search values.',
|
||||||
|
variables: true,
|
||||||
|
value: false,
|
||||||
|
options: [
|
||||||
|
{ label: 'Yes', value: true },
|
||||||
|
{ label: 'No', value: false },
|
||||||
|
],
|
||||||
|
additionalFields: {
|
||||||
|
type: 'query',
|
||||||
|
name: 'getDynamicFields',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'key',
|
||||||
|
value: 'listReplaceRegexOptions',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'parameters.useRegex',
|
||||||
|
value: '{parameters.useRegex}',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export default replace;
|
export default replace;
|
||||||
|
Reference in New Issue
Block a user