aboutsummaryrefslogtreecommitdiff
path: root/node_modules/utf8-byte-length/browser.js
diff options
context:
space:
mode:
authorPriyansh <[email protected]>2020-12-22 17:49:59 +0530
committerPriyansh <[email protected]>2020-12-22 17:49:59 +0530
commite93da8b04da86773247aadb1cbb1912e4f4526b2 (patch)
treeeb4ef3203a92ed3dbd2252ddb1ea23bd2d670c98 /node_modules/utf8-byte-length/browser.js
parenta5743c293dcb435e4b159a4df791f8955a4110ec (diff)
downloadstyx-e93da8b04da86773247aadb1cbb1912e4f4526b2.tar.xz
styx-e93da8b04da86773247aadb1cbb1912e4f4526b2.zip
Rewriting Project
Diffstat (limited to 'node_modules/utf8-byte-length/browser.js')
-rw-r--r--node_modules/utf8-byte-length/browser.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/node_modules/utf8-byte-length/browser.js b/node_modules/utf8-byte-length/browser.js
new file mode 100644
index 0000000..a093731
--- /dev/null
+++ b/node_modules/utf8-byte-length/browser.js
@@ -0,0 +1,47 @@
+'use strict';
+
+function isHighSurrogate(codePoint) {
+ return codePoint >= 0xd800 && codePoint <= 0xdbff;
+}
+
+function isLowSurrogate(codePoint) {
+ return codePoint >= 0xdc00 && codePoint <= 0xdfff;
+}
+
+// Truncate string by size in bytes
+module.exports = function getByteLength(string) {
+ if (typeof string !== "string") {
+ throw new Error("Input must be string");
+ }
+
+ var charLength = string.length;
+ var byteLength = 0;
+ var codePoint = null;
+ var prevCodePoint = null;
+ for (var i = 0; i < charLength; i++) {
+ codePoint = string.charCodeAt(i);
+ // handle 4-byte non-BMP chars
+ // low surrogate
+ if (isLowSurrogate(codePoint)) {
+ // when parsing previous hi-surrogate, 3 is added to byteLength
+ if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) {
+ byteLength += 1;
+ }
+ else {
+ byteLength += 3;
+ }
+ }
+ else if (codePoint <= 0x7f ) {
+ byteLength += 1;
+ }
+ else if (codePoint >= 0x80 && codePoint <= 0x7ff) {
+ byteLength += 2;
+ }
+ else if (codePoint >= 0x800 && codePoint <= 0xffff) {
+ byteLength += 3;
+ }
+ prevCodePoint = codePoint;
+ }
+
+ return byteLength;
+};