Blame view

node_modules/es5-ext/string/format-method.js 708 Bytes
aaac7fed   liuqimichale   add
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
27
  "use strict";
  
  var isCallable = require("../object/is-callable")
    , value      = require("../object/valid-value")
    , call       = Function.prototype.call;
  
  module.exports = function (fmap) {
  	fmap = Object(value(fmap));
  	return function (pattern) {
  		var context = this;
  		value(context);
  		pattern = String(pattern);
  		return pattern.replace(/%([a-zA-Z]+)|\\([\u0000-\uffff])/g, function (
  			match,
  			token,
  			escapeChar
  		) {
  			var t, result;
  			if (escapeChar) return escapeChar;
  			t = token;
  			while (t && !(result = fmap[t])) t = t.slice(0, -1);
  			if (!result) return match;
  			if (isCallable(result)) result = call.call(result, context);
  			return result + token.slice(t.length);
  		});
  	};
  };