Simple template engine

by Vladymyr Shevchuk

JavaScript

const string = '<div><%= title %></div><div><%= description %></div>';
const obj = {
  title: 'hello world!',
  description: 'some description'
};

function prepareTemplate (template, obj = {}) {
  const regexp = /<%=(.*?)%>/g;
  const replacer = (match, p1) => obj[p1.trim()] || p1.trim();

  return template.replace(regexp, replacer);
}


const result1 = '<div>hello world!</div><div>some description</div>';
const result2 = '<div>title</div><div>description</div>';

console.assert(prepareTemplate(string, obj) === result1, 'Should be equal');
console.assert(prepareTemplate(string, {}) === result2, 'Should be equal');
console.assert(prepareTemplate(string, {foo: 'bar'}) === result2, 'Should be equal');
console.assert(prepareTemplate(string) === result2, 'Should be equal');