transformWordOrAdjacent function
Implementation
TextCommandResult transformWordOrAdjacent(
List<String> graphemes, {
required int cursorOffset,
required nav.GraphemePredicate isWord,
required String Function(String text) transform,
}) {
final range = nav.wordRangeForTransform(
graphemes,
cursorOffset,
isWord: isWord,
);
if (range == null || range.start == range.end) {
return _unchangedResult(graphemes, cursorOffset: cursorOffset);
}
final original = graphemes.sublist(range.start, range.end).join();
final transformed = transform(original);
if (transformed == original) {
return _unchangedResult(graphemes, cursorOffset: cursorOffset);
}
final replacement = transformed.characters.toList(growable: false);
final result = edit_ops.replaceRange(
graphemes,
start: range.start,
end: range.end,
replacement: replacement,
);
return TextCommandResult(
graphemes: result.graphemes,
cursorOffset: range.start + replacement.length,
);
}