parseMultiGamePgn static method

List<PgnGame<PgnNodeData>> parseMultiGamePgn(
  1. String pgn, {
  2. PgnHeaders initHeaders() = defaultHeaders,
})

Parse a multi game PGN string.

Returns a list of PgnGame. Provide a optional function initHeaders to create different headers other than the default

The parser will interpret any input as a PGN, creating a tree of syntactically valid (but not necessarily legal) moves, skipping any invalid tokens.

Implementation

static List<PgnGame<PgnNodeData>> parseMultiGamePgn(String pgn,
    {PgnHeaders Function() initHeaders = defaultHeaders}) {
  final multiGamePgnSplit = RegExp(r'\n\s+(?=\[)');
  final List<PgnGame<PgnNodeData>> games = [];
  final pgnGames = pgn.split(multiGamePgnSplit);
  for (final pgnGame in pgnGames) {
    final List<PgnGame<PgnNodeData>> parsedGames = [];
    _PgnParser((PgnGame<PgnNodeData> game) {
      parsedGames.add(game);
    }, initHeaders)
        .parse(pgnGame);
    if (parsedGames.isNotEmpty) {
      games.add(parsedGames[0]);
    }
  }
  return games;
}