location.js 811 Bytes
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.getLineInfo = getLineInfo;
exports.SourceLocation = exports.Position = void 0;

var _whitespace = require("./whitespace");

class Position {
  constructor(line, col) {
    this.line = line;
    this.column = col;
  }

}

exports.Position = Position;

class SourceLocation {
  constructor(start, end) {
    this.start = start;
    this.end = end;
  }

}

exports.SourceLocation = SourceLocation;

function getLineInfo(input, offset) {
  let line = 1;
  let lineStart = 0;
  let match;
  _whitespace.lineBreakG.lastIndex = 0;

  while ((match = _whitespace.lineBreakG.exec(input)) && match.index < offset) {
    line++;
    lineStart = _whitespace.lineBreakG.lastIndex;
  }

  return new Position(line, offset - lineStart);
}