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