Projekt

Obecné

Profil

Stáhnout (1.43 KB) Statistiky
| Větev: | Revize:
1
'use strict';
2

    
3
Object.defineProperty(exports, "__esModule", {
4
    value: true
5
});
6
exports.default = iterator;
7

    
8
var _isArrayLike = require('lodash/isArrayLike');
9

    
10
var _isArrayLike2 = _interopRequireDefault(_isArrayLike);
11

    
12
var _getIterator = require('./getIterator');
13

    
14
var _getIterator2 = _interopRequireDefault(_getIterator);
15

    
16
var _keys = require('lodash/keys');
17

    
18
var _keys2 = _interopRequireDefault(_keys);
19

    
20
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21

    
22
function createArrayIterator(coll) {
23
    var i = -1;
24
    var len = coll.length;
25
    return function next() {
26
        return ++i < len ? { value: coll[i], key: i } : null;
27
    };
28
}
29

    
30
function createES2015Iterator(iterator) {
31
    var i = -1;
32
    return function next() {
33
        var item = iterator.next();
34
        if (item.done) return null;
35
        i++;
36
        return { value: item.value, key: i };
37
    };
38
}
39

    
40
function createObjectIterator(obj) {
41
    var okeys = (0, _keys2.default)(obj);
42
    var i = -1;
43
    var len = okeys.length;
44
    return function next() {
45
        var key = okeys[++i];
46
        return i < len ? { value: obj[key], key: key } : null;
47
    };
48
}
49

    
50
function iterator(coll) {
51
    if ((0, _isArrayLike2.default)(coll)) {
52
        return createArrayIterator(coll);
53
    }
54

    
55
    var iterator = (0, _getIterator2.default)(coll);
56
    return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);
57
}
58
module.exports = exports['default'];
(14-14/25)