| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | "use strict";exports.__esModule = true;exports.LinesAndColumns = void 0;var LF = '\n';var CR = '\r';var LinesAndColumns = /** @class */ (function () {    function LinesAndColumns(string) {        this.length = string.length;        var offsets = [0];        for (var offset = 0; offset < string.length;) {            switch (string[offset]) {                case LF:                    offset += LF.length;                    offsets.push(offset);                    break;                case CR:                    offset += CR.length;                    if (string[offset] === LF) {                        offset += LF.length;                    }                    offsets.push(offset);                    break;                default:                    offset++;                    break;            }        }        this.offsets = offsets;    }    LinesAndColumns.prototype.locationForIndex = function (index) {        if (index < 0 || index > this.length) {            return null;        }        var line = 0;        var offsets = this.offsets;        while (offsets[line + 1] <= index) {            line++;        }        var column = index - offsets[line];        return { line: line, column: column };    };    LinesAndColumns.prototype.indexForLocation = function (location) {        var line = location.line, column = location.column;        if (line < 0 || line >= this.offsets.length) {            return null;        }        if (column < 0 || column > this.lengthOfLine(line)) {            return null;        }        return this.offsets[line] + column;    };    LinesAndColumns.prototype.lengthOfLine = function (line) {        var offset = this.offsets[line];        var nextOffset = line === this.offsets.length - 1            ? this.length            : this.offsets[line + 1];        return nextOffset - offset;    };    return LinesAndColumns;}());exports.LinesAndColumns = LinesAndColumns;
 |