blob: 19f5b4dad8b9e7ae65f20865673bf762deceeb36 [file] [log] [blame]
"use strict";
var ArrayIterator = require("./array-iterator");
var ObjectIterator = require("./object-iterator");
module.exports = iterate;
function iterate(iterable, start, stop, step) {
if (!iterable) {
return empty;
} else if (Array.isArray(iterable)) {
return new ArrayIterator(iterable, start, stop, step);
} else if (typeof iterable.next === "function") {
return iterable;
} else if (typeof iterable.iterate === "function") {
return iterable.iterate(start, stop, step);
} else if (typeof iterable === "object") {
return new ObjectIterator(iterable);
} else {
throw new TypeError("Can't iterate " + iterable);
}
}