/**
 * @private
 * @param {string} template - The template string to evaluate
 * @param {Object} model - The model to evaluate with
 * @return {string} - The evaluated string
 */
function evaluate(template: string, model: any = {}): string {
  try {
    let reg,
      res = template;
    for (const key in model) {
      let value = model[key] !== undefined && model[key] !== null ? model[key] : '';
      if (typeof value === 'string' && value.indexOf('"') > -1) {
        value = value.replace(/"/g, '\\"');
      }
      reg = new RegExp('{{' + key + '}}', 'g');
      res = res.replace(reg, value);
    }
    return res;
  } catch (e) {
    return '';
  }
}

export default evaluate;
