UNPKG

chess-easy

Version:

Chess engine that makes writing chessgame easier than writing a calculator

51 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("../types/common"); const utils_1 = require("../utils"); class FenGenerator { static generateGameStateString(gameState) { const rows = [...gameState].reverse().map((row) => { let rowResult = ""; row.forEach((field) => { if (!field) { if (rowResult.length) { const lastLetterIndex = rowResult.length - 1; const emptyFieldsNumber = Number(rowResult[lastLetterIndex]); if (isNaN(emptyFieldsNumber)) { rowResult += "1"; } else { rowResult = rowResult.substring(0, lastLetterIndex) + String(emptyFieldsNumber + 1); } } else { rowResult += "1"; } } else { const fenSymbol = (0, utils_1.fieldToFenSymbol)(field); rowResult += fenSymbol; } }); return rowResult; }); return rows.join("/"); } static generateMovesNextString(movesNext) { return movesNext === common_1.Colors.WHITE ? "w" : "b"; } static generateFen(gameState, movesNext, castlingAvailability, enPassantPossibility, halfMoveClock, fullMoveNumber) { return [ this.generateGameStateString(gameState), this.generateMovesNextString(movesNext), castlingAvailability || "-", enPassantPossibility, String(halfMoveClock), String(fullMoveNumber), ].join(" "); } } exports.default = FenGenerator; //# sourceMappingURL=FenGenerator.js.map