UNPKG

@itsmworkbench/utils

Version:

The usual utility functions

32 lines (31 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reverseTemplate = exports.escapeRegExp = void 0; function escapeRegExp(string) { // console.log('escapeRegExp', string, typeof string); const asString = string.toString(); let result = asString.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string // console.log('escapeRegExp -asstring', asString, typeof asString, 'result', result); return result; } exports.escapeRegExp = escapeRegExp; function reverseTemplate(inputString, variables) { if (inputString === undefined) return undefined; let template = inputString; for (const varName in variables) { const varValue = variables[varName]; try { // console.log(`Input [${inputString}]\n${varName}:${JSON.stringify ( varValue )} --- ${typeof varValue}\n${JSON.stringify ( variables )}`) const escapedVarValue = escapeRegExp(varValue.toString()); const regex = new RegExp(escapedVarValue, 'g'); template = template.replace(regex, `\${${varName}}`); } catch (e) { throw new Error(`${e}\nInput [${inputString}]\n${varName}:${JSON.stringify(varValue)} --- ${typeof varValue}\n${JSON.stringify(variables)}`); } } console.log('reverseTemplate', inputString, variables, template); return template; } exports.reverseTemplate = reverseTemplate;