Blame view

天文台pc/tianwentai-ui/node_modules/lines-and-columns/build/index.js 1.98 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  "use strict";
  exports.__esModule = true;
  exports.LinesAndColumns = void 0;
  var LF = '\n';
  var CR = '\r';
  var LinesAndColumns = /** @class */ (function () {
      function LinesAndColumns(string) {
          this.string = string;
          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.string.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.string.length
              : this.offsets[line + 1];
          return nextOffset - offset;
      };
      return LinesAndColumns;
  }());
  exports.LinesAndColumns = LinesAndColumns;
  exports["default"] = LinesAndColumns;