37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| var $ = require('../internals/export');
 | |
| var call = require('../internals/function-call');
 | |
| var anObject = require('../internals/an-object');
 | |
| var getIteratorDirect = require('../internals/get-iterator-direct');
 | |
| var notANaN = require('../internals/not-a-nan');
 | |
| var toPositiveInteger = require('../internals/to-positive-integer');
 | |
| var createIteratorProxy = require('../internals/iterator-create-proxy');
 | |
| var IS_PURE = require('../internals/is-pure');
 | |
| 
 | |
| var IteratorProxy = createIteratorProxy(function () {
 | |
|   var iterator = this.iterator;
 | |
|   var next = this.next;
 | |
|   var result, done;
 | |
|   while (this.remaining) {
 | |
|     this.remaining--;
 | |
|     result = anObject(call(next, iterator));
 | |
|     done = this.done = !!result.done;
 | |
|     if (done) return;
 | |
|   }
 | |
|   result = anObject(call(next, iterator));
 | |
|   done = this.done = !!result.done;
 | |
|   if (!done) return result.value;
 | |
| });
 | |
| 
 | |
| // `Iterator.prototype.drop` method
 | |
| // https://github.com/tc39/proposal-iterator-helpers
 | |
| $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
 | |
|   drop: function drop(limit) {
 | |
|     anObject(this);
 | |
|     var remaining = toPositiveInteger(notANaN(+limit));
 | |
|     return new IteratorProxy(getIteratorDirect(this), {
 | |
|       remaining: remaining
 | |
|     });
 | |
|   }
 | |
| });
 | 
