Show More
Commit Description:
merge
Commit Description:
merge
References:
File last commit:
Show/Diff file:
Action:
node_modules/es5-ext/string/format-method.js
| 27 lines
| 708 B
| application/javascript
| JavascriptLexer
|
r789 | "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); | ||||
}); | ||||
}; | ||||
}; | ||||