Projektstart
This commit is contained in:
96
backend/node_modules/obliterator/iterator.js
generated
vendored
Normal file
96
backend/node_modules/obliterator/iterator.js
generated
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
/**
|
||||
* Obliterator Iterator Class
|
||||
* ===========================
|
||||
*
|
||||
* Simple class representing the library's iterators.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Iterator class.
|
||||
*
|
||||
* @constructor
|
||||
* @param {function} next - Next function.
|
||||
*/
|
||||
function Iterator(next) {
|
||||
if (typeof next !== 'function')
|
||||
throw new Error('obliterator/iterator: expecting a function!');
|
||||
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
/**
|
||||
* If symbols are supported, we add `next` to `Symbol.iterator`.
|
||||
*/
|
||||
if (typeof Symbol !== 'undefined')
|
||||
Iterator.prototype[Symbol.iterator] = function () {
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returning an iterator of the given values.
|
||||
*
|
||||
* @param {any...} values - Values.
|
||||
* @return {Iterator}
|
||||
*/
|
||||
Iterator.of = function () {
|
||||
var args = arguments,
|
||||
l = args.length,
|
||||
i = 0;
|
||||
|
||||
return new Iterator(function () {
|
||||
if (i >= l) return {done: true};
|
||||
|
||||
return {done: false, value: args[i++]};
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Returning an empty iterator.
|
||||
*
|
||||
* @return {Iterator}
|
||||
*/
|
||||
Iterator.empty = function () {
|
||||
var iterator = new Iterator(function () {
|
||||
return {done: true};
|
||||
});
|
||||
|
||||
return iterator;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returning an iterator over the given indexed sequence.
|
||||
*
|
||||
* @param {string|Array} sequence - Target sequence.
|
||||
* @return {Iterator}
|
||||
*/
|
||||
Iterator.fromSequence = function (sequence) {
|
||||
var i = 0,
|
||||
l = sequence.length;
|
||||
|
||||
return new Iterator(function () {
|
||||
if (i >= l) return {done: true};
|
||||
|
||||
return {done: false, value: sequence[i++]};
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Returning whether the given value is an iterator.
|
||||
*
|
||||
* @param {any} value - Value.
|
||||
* @return {boolean}
|
||||
*/
|
||||
Iterator.is = function (value) {
|
||||
if (value instanceof Iterator) return true;
|
||||
|
||||
return (
|
||||
typeof value === 'object' &&
|
||||
value !== null &&
|
||||
typeof value.next === 'function'
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Exporting.
|
||||
*/
|
||||
module.exports = Iterator;
|
||||
Reference in New Issue
Block a user