splitParams method
Implementation
List<String> splitParams(String input) {
final list = <String>[];
final currentParam = StringBuffer();
var nestedLevel = 0;
void addCurrent() {
if (currentParam.isNotEmpty) {
final param = currentParam.toString().trim();
if (param.isNotEmpty) list.add(param);
currentParam.clear();
}
}
for (var i = 0; i < input.length; i++) {
final char = input[i];
if (char == ',' && nestedLevel == 0) {
addCurrent();
} else {
// handle subtypes & records
if (char == '<' || char == '(') nestedLevel++;
if (char == '>' || char == ')') nestedLevel--;
if (nestedLevel < 0) nestedLevel = 0;
currentParam.write(char);
}
}
addCurrent(); // add the last param, if any
return list;
}