index.js 617 B

12345678910111213141516171819202122232425
  1. module.exports = function (opts) {
  2. var sep = opts ? opts.sep : '{}'
  3. var len = sep.length
  4. var whitespace = '\\s*'
  5. var left = escape(sep.substring(0, len / 2)) + whitespace
  6. var right = whitespace + escape(sep.substring(len / 2, len))
  7. return function (template, values) {
  8. Object.keys(values).forEach(function (key) {
  9. template = template.replace(regExp(key), values[key])
  10. })
  11. return template
  12. }
  13. function escape (s) {
  14. return [].map.call(s, function (char) {
  15. return '\\' + char
  16. }).join('')
  17. }
  18. function regExp (key) {
  19. return new RegExp(left + key + right, 'g')
  20. }
  21. }