substring method

BidiRope substring(
  1. int start, [
  2. int? end
])

Implementation

BidiRope substring(int start, [int? end]) {
  final actualEnd = end ?? length;

  if (start < 0 || start > length) {
    throw RangeError.range(start, 0, length, 'start');
  }

  if (actualEnd < 0 || actualEnd > length) {
    throw RangeError.range(actualEnd, 0, length, 'end');
  }

  if (start > actualEnd) {
    throw RangeError('start must be less than or equal to end');
  }

  if (start == 0 && actualEnd == length) {
    return this;
  }

  if (start == actualEnd) {
    return BidiRope.empty();
  }

  final subString = _rope.substring(start, actualEnd);
  return BidiRope.fromString(subString);
}