The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/app/utils/lib/templateVarHandler.js

38 lines
1.1 KiB

import { Meteor } from 'meteor/meteor';
let logger;
if (Meteor.isServer) {
const { Logger } = require('../../../server/lib/logger/Logger');
logger = new Logger('TemplateVarHandler');
}
export const templateVarHandler = function (variable, object) {
const templateRegex = /#{([\w\-]+)}/gi;
let match = templateRegex.exec(variable);
let tmpVariable = variable;
if (match == null) {
if (!object.hasOwnProperty(variable)) {
logger && logger.debug(`user does not have attribute: ${variable}`);
return;
}
return object[variable];
}
logger && logger.debug('template found. replacing values');
while (match != null) {
const tmplVar = match[0];
const tmplAttrName = match[1];
if (!object.hasOwnProperty(tmplAttrName)) {
logger && logger.debug(`user does not have attribute: ${tmplAttrName}`);
return;
}
const attrVal = object[tmplAttrName];
logger && logger.debug(`replacing template var: ${tmplVar} with value: ${attrVal}`);
tmpVariable = tmpVariable.replace(tmplVar, attrVal);
match = templateRegex.exec(variable);
}
return tmpVariable;
};