aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/string/from-code-point
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/from-code-point
parent5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff)
node_modules
Diffstat (limited to 'node_modules/es5-ext/string/from-code-point')
-rw-r--r--node_modules/es5-ext/string/from-code-point/implement.js8
-rw-r--r--node_modules/es5-ext/string/from-code-point/index.js5
-rw-r--r--node_modules/es5-ext/string/from-code-point/is-implemented.js7
-rw-r--r--node_modules/es5-ext/string/from-code-point/shim.js37
4 files changed, 57 insertions, 0 deletions
diff --git a/node_modules/es5-ext/string/from-code-point/implement.js b/node_modules/es5-ext/string/from-code-point/implement.js
new file mode 100644
index 000000000..4f815d6be
--- /dev/null
+++ b/node_modules/es5-ext/string/from-code-point/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String, "fromCodePoint", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/node_modules/es5-ext/string/from-code-point/index.js b/node_modules/es5-ext/string/from-code-point/index.js
new file mode 100644
index 000000000..d5a811221
--- /dev/null
+++ b/node_modules/es5-ext/string/from-code-point/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.fromCodePoint
+ : require("./shim");
diff --git a/node_modules/es5-ext/string/from-code-point/is-implemented.js b/node_modules/es5-ext/string/from-code-point/is-implemented.js
new file mode 100644
index 000000000..e6ccfa7fa
--- /dev/null
+++ b/node_modules/es5-ext/string/from-code-point/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var fromCodePoint = String.fromCodePoint;
+ if (typeof fromCodePoint !== "function") return false;
+ return fromCodePoint(0x1D306, 0x61, 0x1D307) === "\ud834\udf06a\ud834\udf07";
+};
diff --git a/node_modules/es5-ext/string/from-code-point/shim.js b/node_modules/es5-ext/string/from-code-point/shim.js
new file mode 100644
index 000000000..55824f573
--- /dev/null
+++ b/node_modules/es5-ext/string/from-code-point/shim.js
@@ -0,0 +1,37 @@
+// Based on:
+// http://norbertlindenberg.com/2012/05/ecmascript-supplementary-characters/
+// and:
+// https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /fromcodepoint.js
+
+"use strict";
+
+var floor = Math.floor, fromCharCode = String.fromCharCode;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (codePoint1 /*, …codePoints*/) {
+ var chars = [], length = arguments.length, i, codePoint, result = "";
+ for (i = 0; i < length; ++i) {
+ codePoint = Number(arguments[i]);
+ if (
+ !isFinite(codePoint) ||
+ codePoint < 0 ||
+ codePoint > 0x10ffff ||
+ floor(codePoint) !== codePoint
+ ) {
+ throw new RangeError("Invalid code point " + codePoint);
+ }
+
+ if (codePoint < 0x10000) {
+ chars.push(codePoint);
+ } else {
+ codePoint -= 0x10000;
+ // eslint-disable-next-line no-bitwise
+ chars.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);
+ }
+ if (i + 1 !== length && chars.length <= 0x4000) continue;
+ result += fromCharCode.apply(null, chars);
+ chars.length = 0;
+ }
+ return result;
+};