fen property

String get fen

Board part of the Forsyth-Edwards-Notation.

Implementation

String get fen {
  final buffer = StringBuffer();
  int empty = 0;
  for (int rank = 7; rank >= 0; rank--) {
    for (int file = 0; file < 8; file++) {
      final square = Square(file + rank * 8);
      final piece = pieceAt(square);
      if (piece == null) {
        empty++;
      } else {
        if (empty > 0) {
          buffer.write(empty.toString());
          empty = 0;
        }
        buffer.write(piece.fenChar);
      }

      if (file == 7) {
        if (empty > 0) {
          buffer.write(empty.toString());
          empty = 0;
        }
        if (rank != 0) buffer.write('/');
      }
    }
  }
  return buffer.toString();
}