textInRange method

String textInRange({
  1. required int startOffset,
  2. required int endOffset,
})

Implementation

String textInRange({required int startOffset, required int endOffset}) {
  final start = startOffset.clamp(0, length);
  final end = endOffset.clamp(start, length);
  if (start == end) {
    return '';
  }

  final startPosition = positionForOffset(start);
  final endPosition = positionForOffset(end);
  final buffer = StringBuffer();
  for (var line = startPosition.line; line <= endPosition.line; line++) {
    final lineStart = line == startPosition.line ? startPosition.column : 0;
    final lineEnd = line == endPosition.line
        ? endPosition.column
        : lineLength(line);
    if (lineEnd > lineStart) {
      buffer.write(
        _storage.textInLineRange(
          line,
          startColumn: lineStart,
          endColumn: lineEnd,
        ),
      );
    }
    if (line < endPosition.line) {
      buffer.write('\n');
    }
  }
  return buffer.toString();
}