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.

Constructors

Properties

Constructors

Properties

addNewLine: ((offset: number) => number)

Should be called in ascending order. Otherwise, call lineCounter.lineStarts.sort() before calling linePos().

linePos: ((offset: number) => {
    col: number;
    line: 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.

lineStarts: number[]