Adding 'putback', ' special case where the end of a match parameter, outside a specified regexp, shouldn't be consumed.
This commit is contained in:
		
							parent
							
								
									b43f34afa8
								
							
						
					
					
						commit
						18811ef276
					
				|  | @ -101,17 +101,20 @@ | |||
|       throw new Error("Could not parse '" + this.input + "'."); | ||||
|     }; | ||||
| 
 | ||||
|     ReParse.prototype.match = function(pattern) { | ||||
|     ReParse.prototype.match = function(pattern, putback) { | ||||
|       var probe; | ||||
|       if (putback == null) { | ||||
|         putback = false; | ||||
|       } | ||||
|       probe = this.input.match(pattern); | ||||
|       if (!probe) { | ||||
|         return this.fail(); | ||||
|       } | ||||
|       this.input = this.input.substr(probe[0].length); | ||||
|       if (probe[1] === undefined) { | ||||
|         return probe[0]; | ||||
|       } else { | ||||
|       this.input = this.input.substr(((probe[1] != null) && putback ? probe[1].length : probe[0].length)); | ||||
|       if (probe[1] != null) { | ||||
|         return probe[1]; | ||||
|       } else { | ||||
|         return probe[0]; | ||||
|       } | ||||
|     }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -75,11 +75,11 @@ exports.ReParse = class ReParse | |||
|     # | ||||
|     # Note that the `return fail()` call eventually leads to a throw. | ||||
| 
 | ||||
|     match: (pattern) => | ||||
|     match: (pattern, putback = false) => | ||||
|         probe = @input.match pattern | ||||
|         return @fail()  unless probe | ||||
|         @input = @input.substr probe[0].length | ||||
|         if probe[1] is `undefined` then probe[0] else probe[1] | ||||
|         @input = @input.substr (if probe[1]? and putback then probe[1].length else probe[0].length) | ||||
|         if probe[1]? then probe[1] else probe[0] | ||||
| 
 | ||||
|     # Attempts to apply the method and produce a value.  If it fails, | ||||
|     # restores the input to the previous state. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue