index.js 672 B

1234567891011121314151617181920212223242526
  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. var value = String(values[key]).replace(/\$/g, '$$$$')
  10. template = template.replace(regExp(key), value)
  11. })
  12. return template
  13. }
  14. function escape (s) {
  15. return [].map.call(s, function (char) {
  16. return '\\' + char
  17. }).join('')
  18. }
  19. function regExp (key) {
  20. return new RegExp(left + key + right, 'g')
  21. }
  22. }