substring method
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);
}