aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/string/format-method.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-08-14 05:01:11 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-08-14 05:02:09 +0200
commit363723fc84f7b8477592e0105aeb331ec9a017af (patch)
tree29f92724f34131bac64d6a318dd7e30612e631c7 /node_modules/es5-ext/string/format-method.js
parent5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff)
node_modules
Diffstat (limited to 'node_modules/es5-ext/string/format-method.js')
-rw-r--r--node_modules/es5-ext/string/format-method.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/node_modules/es5-ext/string/format-method.js b/node_modules/es5-ext/string/format-method.js
new file mode 100644
index 000000000..28956fea2
--- /dev/null
+++ b/node_modules/es5-ext/string/format-method.js
@@ -0,0 +1,27 @@
+"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);
+ });
+ };
+};