You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"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); }); }; };
|