List parseList()

in lib/src/scan.dart [33:55]


List<T> parseList<T>(StringScanner scanner, T Function() parseElement) {
  final result = <T>[];

  // Consume initial empty values.
  while (scanner.scan(',')) {
    scanner.scan(whitespace);
  }

  result.add(parseElement());
  scanner.scan(whitespace);

  while (scanner.scan(',')) {
    scanner.scan(whitespace);

    // Empty elements are allowed, but excluded from the results.
    if (scanner.matches(',') || scanner.isDone) continue;

    result.add(parseElement());
    scanner.scan(whitespace);
  }

  return result;
}