chess-easy
Version:
Chess engine that makes writing chessgame easier than writing a calculator
51 lines • 1.95 kB
JavaScript
;
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