textSanitizeRunesLimited function
List<int>
textSanitizeRunesLimited(
- List<int> runes, {
- required bool multiline,
- required int maxOutputCodepoints,
})
Implementation
List<int> textSanitizeRunesLimited(
List<int> runes, {
required bool multiline,
required int maxOutputCodepoints,
}) {
if (maxOutputCodepoints <= 0) return const [];
final tabRunes = multiline
? const <int>[0x20, 0x20, 0x20, 0x20]
: const <int>[0x20];
final newlineRunes = multiline ? const <int>[0x0A] : const <int>[0x20];
final result = <int>[];
for (final rune in runes) {
if (result.length >= maxOutputCodepoints) break;
if (rune == 0xFFFD) {
continue;
} else if (rune == 0x0D || rune == 0x0A) {
for (final codepoint in newlineRunes) {
if (result.length >= maxOutputCodepoints) break;
result.add(codepoint);
}
} else if (rune == 0x09) {
for (final codepoint in tabRunes) {
if (result.length >= maxOutputCodepoints) break;
result.add(codepoint);
}
} else if (_isControlRune(rune)) {
continue;
} else {
result.add(rune);
}
}
return result;
}