positionAt method

Position positionAt(
  1. int offset
)

Converts a UTF-16 offset into a Position.

Implementation

Position positionAt(int offset) {
  if (offset <= 0) return const Position(0, 0);
  if (offset > text.length) offset = text.length;

  // Binary search for the greatest line start <= offset.
  var lo = 0, hi = _lineStarts.length - 1;
  while (lo < hi) {
    final mid = (lo + hi + 1) >> 1;
    if (_lineStarts[mid] <= offset) {
      lo = mid;
    } else {
      hi = mid - 1;
    }
  }
  return Position(lo, offset - _lineStarts[lo]);
}