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; | ||
|  | }; |