|
|
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = iterator;
-
- var _isArrayLike = require('lodash/isArrayLike');
-
- var _isArrayLike2 = _interopRequireDefault(_isArrayLike);
-
- var _getIterator = require('./getIterator');
-
- var _getIterator2 = _interopRequireDefault(_getIterator);
-
- var _keys = require('lodash/keys');
-
- var _keys2 = _interopRequireDefault(_keys);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function createArrayIterator(coll) {
- var i = -1;
- var len = coll.length;
- return function next() {
- return ++i < len ? { value: coll[i], key: i } : null;
- };
- }
-
- function createES2015Iterator(iterator) {
- var i = -1;
- return function next() {
- var item = iterator.next();
- if (item.done) return null;
- i++;
- return { value: item.value, key: i };
- };
- }
-
- function createObjectIterator(obj) {
- var okeys = (0, _keys2.default)(obj);
- var i = -1;
- var len = okeys.length;
- return function next() {
- var key = okeys[++i];
- return i < len ? { value: obj[key], key: key } : null;
- };
- }
-
- function iterator(coll) {
- if ((0, _isArrayLike2.default)(coll)) {
- return createArrayIterator(coll);
- }
-
- var iterator = (0, _getIterator2.default)(coll);
- return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);
- }
- module.exports = exports['default'];
|