| 123456789101112131415161718192021222324252627 | "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);		});	};};
 |