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.
45 lines
756 B
45 lines
756 B
3 years ago
|
/**
|
||
|
* Obliterator Range Function
|
||
|
* ===========================
|
||
|
*
|
||
|
* Function returning a range iterator.
|
||
|
*/
|
||
|
var Iterator = require('./iterator.js');
|
||
|
|
||
|
/**
|
||
|
* Range.
|
||
|
*
|
||
|
* @param {number} start - Start.
|
||
|
* @param {number} end - End.
|
||
|
* @param {number} step - Step.
|
||
|
* @return {Iterator}
|
||
|
*/
|
||
|
module.exports = function range(start, end, step) {
|
||
|
if (arguments.length === 1) {
|
||
|
end = start;
|
||
|
start = 0;
|
||
|
}
|
||
|
|
||
|
if (arguments.length < 3) step = 1;
|
||
|
|
||
|
var i = start;
|
||
|
|
||
|
var iterator = new Iterator(function () {
|
||
|
if (i < end) {
|
||
|
var value = i;
|
||
|
|
||
|
i += step;
|
||
|
|
||
|
return {value: value, done: false};
|
||
|
}
|
||
|
|
||
|
return {done: true};
|
||
|
});
|
||
|
|
||
|
iterator.start = start;
|
||
|
iterator.end = end;
|
||
|
iterator.step = step;
|
||
|
|
||
|
return iterator;
|
||
|
};
|