gx
chenyc
2025-06-12 7b72ac13a83764a662159d4a49b7fffb90476ecb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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')
  }
}