| 12345678910111213141516171819202122232425262728293031323334353637383940 | 
							- 'use strict';
 
- var setPrototypeOf = require('es5-ext/object/set-prototype-of')
 
-   , d              = require('d')
 
-   , Iterator       = require('../')
 
-   , validIterable  = require('../valid-iterable')
 
-   , push = Array.prototype.push
 
-   , defineProperties = Object.defineProperties
 
-   , IteratorChain;
 
- IteratorChain = function (iterators) {
 
- 	defineProperties(this, {
 
- 		__iterators__: d('', iterators),
 
- 		__current__: d('w', iterators.shift())
 
- 	});
 
- };
 
- if (setPrototypeOf) setPrototypeOf(IteratorChain, Iterator);
 
- IteratorChain.prototype = Object.create(Iterator.prototype, {
 
- 	constructor: d(IteratorChain),
 
- 	next: d(function () {
 
- 		var result;
 
- 		if (!this.__current__) return { done: true, value: undefined };
 
- 		result = this.__current__.next();
 
- 		while (result.done) {
 
- 			this.__current__ = this.__iterators__.shift();
 
- 			if (!this.__current__) return { done: true, value: undefined };
 
- 			result = this.__current__.next();
 
- 		}
 
- 		return result;
 
- 	})
 
- });
 
- module.exports = function () {
 
- 	var iterators = [this];
 
- 	push.apply(iterators, arguments);
 
- 	iterators.forEach(validIterable);
 
- 	return new IteratorChain(iterators);
 
- };
 
 
  |