textSortSelectedLines function
TextLineCommandResult
textSortSelectedLines({
- required List<
String> lines, - required TextLineStateSnapshot state,
- bool descending = false,
- bool caseSensitive = false,
Implementation
TextLineCommandResult textSortSelectedLines({
required List<String> lines,
required TextLineStateSnapshot state,
bool descending = false,
bool caseSensitive = false,
}) {
final nextLines = lines.isEmpty ? <String>[''] : List<String>.from(lines);
final clampedState = _clampLineStateSnapshot(state, nextLines);
final hasSelection = clampedState.hasSelection;
final span = hasSelection
? _selectedLineSpan(clampedState)
: (startLine: 0, endLine: nextLines.length - 1);
if (span.startLine >= span.endLine) {
return _lineResultFromSnapshot(nextLines, clampedState, changed: false);
}
final originalTexts = nextLines.sublist(span.startLine, span.endLine + 1);
final sortedTexts = List<String>.from(originalTexts)
..sort(
(a, b) => _compareLineContent(
a,
b,
descending: descending,
caseSensitive: caseSensitive,
),
);
if (_listStringEquals(originalTexts, sortedTexts)) {
return _lineResultFromSnapshot(nextLines, clampedState, changed: false);
}
nextLines.replaceRange(span.startLine, span.endLine + 1, sortedTexts);
return _lineResultFromSnapshot(nextLines, clampedState);
}