23 lines
		
	
	
		
			733 B
		
	
	
	
		
			TypeScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			733 B
		
	
	
	
		
			TypeScript
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|  * Tracks newlines during parsing in order to provide an efficient API for
 | |
|  * determining the one-indexed `{ line, col }` position for any offset
 | |
|  * within the input.
 | |
|  */
 | |
| export declare class LineCounter {
 | |
|     lineStarts: number[];
 | |
|     /**
 | |
|      * Should be called in ascending order. Otherwise, call
 | |
|      * `lineCounter.lineStarts.sort()` before calling `linePos()`.
 | |
|      */
 | |
|     addNewLine: (offset: number) => number;
 | |
|     /**
 | |
|      * Performs a binary search and returns the 1-indexed { line, col }
 | |
|      * position of `offset`. If `line === 0`, `addNewLine` has never been
 | |
|      * called or `offset` is before the first known newline.
 | |
|      */
 | |
|     linePos: (offset: number) => {
 | |
|         line: number;
 | |
|         col: number;
 | |
|     };
 | |
| }
 |