diff options
author | Minteck <contact@minteck.org> | 2021-12-21 16:52:28 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2021-12-21 16:52:28 +0100 |
commit | 46e43f4bde4a35785b4997b81e86cd19f046b69b (patch) | |
tree | c53c2f826f777f9d6b2d249dab556feb72a6c3a6 /src/node_modules/es-abstract/2016/UTF16Encoding.js | |
download | langdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.tar.gz langdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.tar.bz2 langdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.zip |
Commit
Diffstat (limited to 'src/node_modules/es-abstract/2016/UTF16Encoding.js')
-rw-r--r-- | src/node_modules/es-abstract/2016/UTF16Encoding.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/node_modules/es-abstract/2016/UTF16Encoding.js b/src/node_modules/es-abstract/2016/UTF16Encoding.js new file mode 100644 index 0000000..7cedbb2 --- /dev/null +++ b/src/node_modules/es-abstract/2016/UTF16Encoding.js @@ -0,0 +1,23 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $fromCharCode = GetIntrinsic('%String.fromCharCode%'); + +var floor = require('./floor'); +var modulo = require('./modulo'); + +// https://ecma-international.org/ecma-262/7.0/#sec-utf16encoding + +module.exports = function UTF16Encoding(cp) { + if (typeof cp !== 'number' || cp < 0 || cp > 0x10FFFF) { + throw new $TypeError('Assertion failed: `cp` must be >= 0 and <= 0x10FFFF'); + } + if (cp <= 65535) { + return cp; + } + var cu1 = floor((cp - 65536) / 1024) + 0xD800; + var cu2 = modulo(cp - 65536, 1024) + 0xDC00; + return $fromCharCode(cu1) + $fromCharCode(cu2); +}; |