parseTermcap function

CapabilityEvent parseTermcap(
  1. List<int> data
)

Implementation

CapabilityEvent parseTermcap(List<int> data) {
  if (data.isEmpty) return const CapabilityEvent('');
  final raw = String.fromCharCodes(data);
  final parts = raw.split(';');
  final out = <String>[];
  for (final p in parts) {
    if (p.isEmpty) continue;
    final kv = p.split('=');
    if (kv.isEmpty) return const CapabilityEvent('');

    final nameHex = kv[0];
    List<int> name;
    try {
      name = _decodeHex(nameHex);
    } catch (_) {
      continue;
    }
    if (name.isEmpty) continue;

    List<int> value = const [];
    if (kv.length > 1) {
      try {
        value = _decodeHex(kv.sublist(1).join('='));
      } catch (_) {
        continue;
      }
    }

    final nameStr = utf8.decode(name, allowMalformed: true);
    if (value.isEmpty) {
      out.add(nameStr);
    } else {
      out.add('$nameStr=${utf8.decode(value, allowMalformed: true)}');
    }
  }
  return CapabilityEvent(out.join(';'));
}