decodeListItem function

Object? decodeListItem(
  1. LineCursor cursor,
  2. int baseDepth,
  3. String activeDelimiter,
  4. ResolvedDecodeOptions options,
)

Decodes a list item

Implementation

Object? decodeListItem(
  LineCursor cursor,
  int baseDepth,
  String activeDelimiter,
  ResolvedDecodeOptions options,
) {
  final line = cursor.next();
  if (line == null) {
    throw StateError('Expected list item');
  }

  final afterHyphen = line.content.substring(listItemPrefix.length);

  // Check for array header after hyphen
  if (isArrayHeaderAfterHyphen(afterHyphen)) {
    final arrayHeader = parseArrayHeaderLine(afterHyphen, defaultDelimiters);
    if (arrayHeader != null) {
      return decodeArrayFromHeader(arrayHeader.header, arrayHeader.inlineValues,
          cursor, baseDepth, options);
    }
  }

  // Check for object first field after hyphen
  if (isObjectFirstFieldAfterHyphen(afterHyphen)) {
    return decodeObjectFromListItem(line, cursor, baseDepth, options);
  }

  // Primitive value
  return parsePrimitiveToken(afterHyphen);
}