readLink function

void readLink(
  1. String data,
  2. LinkState out
)

Parses an OSC 8 hyperlink sequence from data into out.

Implementation

void readLink(String data, LinkState out) {
  // OSC 8 format: ESC ] 8 ; params ; url ST
  // Here `data` is the portion after "8;" in our parser.
  final firstSep = data.indexOf(';');
  if (firstSep < 0) return;
  final params = data.substring(0, firstSep);
  final url = data.substring(firstSep + 1);
  // Treat unsafe OSC 8 payloads as a link reset. Cell deliberately rejects
  // control characters to prevent terminal-control injection, but malformed
  // or untrusted ANSI input must not be able to crash the renderer.
  if (_containsControl(params) || _containsControl(url)) {
    out.link = const Link();
    return;
  }
  out.link = Link(url: url, params: params);
}