Event _parseFlowMappingKey()

in lib/src/parser.dart [602:637]


  Event _parseFlowMappingKey({bool first = false}) {
    if (first) _scanner.scan();
    var token = _scanner.peek()!;

    if (token.type != TokenType.flowMappingEnd) {
      if (!first) {
        if (token.type != TokenType.flowEntry) {
          throw YamlException(
              "While parsing a flow mapping, expected ',' or '}'.",
              token.span.start.pointSpan());
        }

        token = _scanner.advance()!;
      }

      if (token.type == TokenType.key) {
        token = _scanner.advance()!;
        if (token.type != TokenType.value &&
            token.type != TokenType.flowEntry &&
            token.type != TokenType.flowMappingEnd) {
          _states.add(_State.FLOW_MAPPING_VALUE);
          return _parseNode();
        } else {
          _state = _State.FLOW_MAPPING_VALUE;
          return _processEmptyScalar(token.span.start);
        }
      } else if (token.type != TokenType.flowMappingEnd) {
        _states.add(_State.FLOW_MAPPING_EMPTY_VALUE);
        return _parseNode();
      }
    }

    _scanner.scan();
    _state = _states.removeLast();
    return Event(EventType.mappingEnd, token.span);
  }