2025-04-02 06:50:39 -04:00

29 lines
702 B
JavaScript

module.exports = function (opts) {
var sep = opts ? opts.sep : '{}';
var len = sep.length;
var whitespace = '\\s*';
var left = escape(sep.substring(0, len / 2)) + whitespace;
var right = whitespace + escape(sep.substring(len / 2, len));
return function (template, values) {
Object.keys(values).forEach(function (key) {
var value = String(values[key]).replace(/\$/g, '$$$$');
template = template.replace(regExp(key), value);
});
return template;
};
function escape(s) {
return [].map
.call(s, function (char) {
return '\\' + char;
})
.join('');
}
function regExp(key) {
return new RegExp(left + key + right, 'g');
}
};