terminalSafeBlockText function

String terminalSafeBlockText(
  1. String value
)

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();
}