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