| | |
| | | var uncurryThis = require('../internals/function-uncurry-this'); |
| | | var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); |
| | | var toString = require('../internals/to-string'); |
| | | var requireObjectCoercible = require('../internals/require-object-coercible'); |
| | | |
| | | var charAt = uncurryThis(''.charAt); |
| | | var charCodeAt = uncurryThis(''.charCodeAt); |
| | | var stringSlice = uncurryThis(''.slice); |
| | | |
| | | var createMethod = function (CONVERT_TO_STRING) { |
| | | return function ($this, pos) { |
| | |
| | | var size = S.length; |
| | | var first, second; |
| | | if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; |
| | | first = S.charCodeAt(position); |
| | | first = charCodeAt(S, 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; |
| | | || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF |
| | | ? CONVERT_TO_STRING |
| | | ? charAt(S, position) |
| | | : first |
| | | : CONVERT_TO_STRING |
| | | ? stringSlice(S, position, position + 2) |
| | | : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; |
| | | }; |
| | | }; |
| | | |