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.
		
		
		
		
		
			
		
			
				
					44 lines
				
				976 B
			
		
		
			
		
	
	
					44 lines
				
				976 B
			| 
								 
											3 years ago
										 
									 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Obliterator Match Function
							 | 
						||
| 
								 | 
							
								 * ===========================
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Function returning an iterator over the matches of the given regex on the
							 | 
						||
| 
								 | 
							
								 * target string.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								var Iterator = require('./iterator.js');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Match.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param  {RegExp}   pattern - Regular expression to use.
							 | 
						||
| 
								 | 
							
								 * @param  {string}   string  - Target string.
							 | 
						||
| 
								 | 
							
								 * @return {Iterator}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								module.exports = function match(pattern, string) {
							 | 
						||
| 
								 | 
							
								  var executed = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!(pattern instanceof RegExp))
							 | 
						||
| 
								 | 
							
								    throw new Error(
							 | 
						||
| 
								 | 
							
								      'obliterator/match: invalid pattern. Expecting a regular expression.'
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof string !== 'string')
							 | 
						||
| 
								 | 
							
								    throw new Error('obliterator/match: invalid target. Expecting a string.');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return new Iterator(function () {
							 | 
						||
| 
								 | 
							
								    if (executed && !pattern.global) {
							 | 
						||
| 
								 | 
							
								      pattern.lastIndex = 0;
							 | 
						||
| 
								 | 
							
								      return {done: true};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    executed = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var m = pattern.exec(string);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (m) return {value: m};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    pattern.lastIndex = 0;
							 | 
						||
| 
								 | 
							
								    return {done: true};
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								};
							 |