convert method

  1. @override
List convert(
  1. String items
)
override

Converts input and returns the result of the conversion.

Implementation

@override
List<dynamic> convert(String items) {
  final result = [];
  int left = 0;
  int? indexOfNextNewLine() {
    if (left >= items.length) {
      return null;
    }
    return items.indexOf('\n', left).asNullableIndex;
  }

  int? right = indexOfNextNewLine();
  while (left < items.length && (right == null || left <= right)) {
    try {
      result.add(jsonCodec.decode(items.substring(left, right)));
      left = switch (right) {
        null => items.length,
        final index => index + 1,
      };
      right = indexOfNextNewLine();
    } catch (_) {
      left = indexOfNextNewLine() ?? items.length;
      left++;
      right = indexOfNextNewLine();
    }
  }
  return result;
}