diff --git a/packages/server/src/automations/automationUtils.js b/packages/server/src/automations/automationUtils.js index a3bcae0cee..0646e453c2 100644 --- a/packages/server/src/automations/automationUtils.js +++ b/packages/server/src/automations/automationUtils.js @@ -1,5 +1,10 @@ const { getTable } = require("../api/controllers/table/utils") -const { findHBSBlocks } = require("@budibase/string-templates") +const { + findHBSBlocks, + decodeJSBinding, + isJSBinding, + encodeJSBinding, +} = require("@budibase/string-templates") /** * When values are input to the system generally they will be of type string as this is required for template strings. @@ -77,11 +82,21 @@ exports.getError = err => { } exports.substituteLoopStep = (hbsString, substitute) => { - let blocks = findHBSBlocks(hbsString) + let blocks = [] + let checkForJS = isJSBinding(hbsString) + if (checkForJS) { + hbsString = decodeJSBinding(hbsString) + blocks.push(hbsString) + } else { + blocks = findHBSBlocks(hbsString) + } for (let block of blocks) { - let oldBlock = block block = block.replace(/loop/, substitute) - hbsString = hbsString.replace(new RegExp(oldBlock, "g"), block) + if (checkForJS) { + hbsString = encodeJSBinding(block) + } else { + hbsString = block + } } return hbsString