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.
		
		
		
		
		
			
		
			
				
					
					
						
							33 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							33 lines
						
					
					
						
							1.2 KiB
						
					
					
				| '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 iteratorClose = require('../internals/iterator-close'); | |
| var IS_PURE = require('../internals/is-pure'); | |
| 
 | |
| var IteratorProxy = createIteratorProxy(function () { | |
|   var iterator = this.iterator; | |
|   if (!this.remaining--) { | |
|     this.done = true; | |
|     return iteratorClose(iterator, 'normal', undefined); | |
|   } | |
|   var result = anObject(call(this.next, iterator)); | |
|   var done = this.done = !!result.done; | |
|   if (!done) return result.value; | |
| }); | |
| 
 | |
| // `Iterator.prototype.take` method | |
| // https://github.com/tc39/proposal-iterator-helpers | |
| $({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, { | |
|   take: function take(limit) { | |
|     anObject(this); | |
|     var remaining = toPositiveInteger(notANaN(+limit)); | |
|     return new IteratorProxy(getIteratorDirect(this), { | |
|       remaining: remaining | |
|     }); | |
|   } | |
| });
 |