| | |
| | | 'use strict'; |
| | | var $ = require('../internals/export'); |
| | | var uncurryThis = require('../internals/function-uncurry-this'); |
| | | var requireObjectCoercible = require('../internals/require-object-coercible'); |
| | | var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); |
| | | var toString = require('../internals/to-string'); |
| | | |
| | | var slice = ''.slice; |
| | | var stringSlice = uncurryThis(''.slice); |
| | | var max = Math.max; |
| | | var min = Math.min; |
| | | |
| | | // eslint-disable-next-line unicorn/prefer-string-slice -- required for testing |
| | | // eslint-disable-next-line unicorn/prefer-string-slice, es-x/no-string-prototype-substr -- required for testing |
| | | var FORCED = !''.substr || 'ab'.substr(-1) !== 'b'; |
| | | |
| | | // `String.prototype.substr` method |
| | |
| | | intLength = length === undefined ? size : toIntegerOrInfinity(length); |
| | | if (intLength <= 0 || intLength === Infinity) return ''; |
| | | intEnd = min(intStart + intLength, size); |
| | | return intStart >= intEnd ? '' : slice.call(that, intStart, intEnd); |
| | | return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd); |
| | | } |
| | | }); |