listValue method

List<String> listValue(
  1. String key
)

Parses a comma-separated protocol list value, honoring , and \ escaping from the Streaming Encoder Ethernet Protocol.

Implementation

List<String> listValue(String key) {
  final value = values[key];
  if (value == null || value.isEmpty) return const <String>[];
  final items = <String>[];
  final current = StringBuffer();
  var escaped = false;
  for (final codeUnit in value.codeUnits) {
    final character = String.fromCharCode(codeUnit);
    if (escaped) {
      current.write(character);
      escaped = false;
    } else if (character == '\\') {
      escaped = true;
    } else if (character == ',') {
      items.add(current.toString().trim());
      current.clear();
    } else {
      current.write(character);
    }
  }
  if (escaped) current.write('\\');
  items.add(current.toString().trim());
  return items;
}