terminalSafeBlockText function
Makes untrusted text safe for plain terminal output.
Printable Unicode and newlines are preserved. Every C0/C1 control character, including tab, escape, carriage return, and delete, is rendered as visible escaped text so it cannot affect terminal state.
Implementation
String terminalSafeBlockText(String value) {
final buffer = StringBuffer();
for (final rune in value.runes) {
if (rune == 0x0a || _isPrintableRune(rune)) {
buffer.writeCharCode(rune);
continue;
}
switch (rune) {
case 0x1b:
buffer.write(r'\x1b');
continue;
case 0x0d:
buffer.write(r'\r');
continue;
case 0x09:
buffer.write(r'\t');
continue;
case 0x7f:
buffer.write(r'\x7f');
continue;
default:
final width = rune <= 0xff ? 2 : 4;
buffer
..write(r'\x')
..write(rune.toRadixString(16).padLeft(width, '0'));
continue;
}
}
return buffer.toString();
}