frontend/.pnpm-store/v3/files/7f/4b261250f1dbcd2ceec46dd381128043998a739bbe3b0ca9f738b5148f82e6b7999043f96e4f987b10b767bdc04456aabb1c8da6324467b65e8a28732e7ec9

27 lines
713 B
Plaintext

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