You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
var hasSymbols = require('has-symbols')(); var GetIntrinsic = require('get-intrinsic'); var callBound = require('call-bind/callBound');
var $iterator = GetIntrinsic('%Symbol.iterator%', true); var $stringSlice = callBound('String.prototype.slice');
module.exports = function getIteratorMethod(ES, iterable) { var usingIterator; if (hasSymbols) { usingIterator = ES.GetMethod(iterable, $iterator); } else if (ES.IsArray(iterable)) { usingIterator = function () { var i = -1; var arr = this; // eslint-disable-line no-invalid-this
return { next: function () { i += 1; return { done: i >= arr.length, value: arr[i] }; } }; }; } else if (ES.Type(iterable) === 'String') { usingIterator = function () { var i = 0; return { next: function () { var nextIndex = ES.AdvanceStringIndex(iterable, i, true); var value = $stringSlice(iterable, i, nextIndex); i = nextIndex; return { done: nextIndex > iterable.length, value: value }; } }; }; } return usingIterator; };
|