diff options
Diffstat (limited to 'node_modules/core-js/internals/string-multibyte.js')
| -rw-r--r-- | node_modules/core-js/internals/string-multibyte.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/node_modules/core-js/internals/string-multibyte.js b/node_modules/core-js/internals/string-multibyte.js new file mode 100644 index 0000000..c0cf086 --- /dev/null +++ b/node_modules/core-js/internals/string-multibyte.js @@ -0,0 +1,27 @@ +var toInteger = require('../internals/to-integer'); +var requireObjectCoercible = require('../internals/require-object-coercible'); + +// `String.prototype.{ codePointAt, at }` methods implementation +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = String(requireObjectCoercible($this)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; |
