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