deleteWordForwardRangeFromReader function
({int end, int start})
deleteWordForwardRangeFromReader(
- int length,
- int offset, {
- required GraphemePredicate isWord,
- required GraphemeReader graphemeAt,
Implementation
({int start, int end}) deleteWordForwardRangeFromReader(
int length,
int offset, {
required GraphemePredicate isWord,
required GraphemeReader graphemeAt,
}) {
if (offset < 0 || offset >= length) {
final clamped = offset.clamp(0, length);
return (start: clamped, end: clamped);
}
var end = offset;
final current = graphemeAt(offset);
if (current != null && isWord(current)) {
while (end < length) {
final grapheme = graphemeAt(end);
if (grapheme == null || !isWord(grapheme)) {
break;
}
end++;
}
} else {
while (end < length) {
final grapheme = graphemeAt(end);
if (grapheme != null && isWord(grapheme)) {
break;
}
end++;
}
while (end < length) {
final grapheme = graphemeAt(end);
if (grapheme == null || !isWord(grapheme)) {
break;
}
end++;
}
}
return (start: offset, end: end.clamp(0, length));
}