listValue method
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;
}