renderChessboard = {
function renderChessboard(fen) {
const ranks = fen.split(' ')[0].split('/');
const board = document.createElement('table');
board.className = 'chessboard';
for (let rankIndex = 0; rankIndex < 8; rankIndex++) {
const rank = ranks[rankIndex];
const rankRow = document.createElement('tr');
let fileIndex = 0;
for (let charIndex = 0; charIndex < rank.length; charIndex++) {
const char = rank[charIndex];
if (isNaN(parseInt(char, 10))) {
const square = document.createElement('td');
square.className = (fileIndex + rankIndex) % 2 === 0 ? 'light' : 'dark';
square.innerHTML = getPieceSymbol(char);
rankRow.appendChild(square);
fileIndex++;
} else {
const emptySquares = parseInt(char, 10);
for (let i = 0; i < emptySquares; i++) {
const square = document.createElement('td');
square.className = (fileIndex + rankIndex) % 2 === 0 ? 'light' : 'dark';
rankRow.appendChild(square);
fileIndex++;
}
}
}
board.appendChild(rankRow);
}
return board;
}
function getPieceSymbol(piece) {
switch (piece) {
case 'r': return '♜';
case 'n': return '♞';
case 'b': return '♝';
case 'q': return '♛';
case 'k': return '♚';
case 'p': return '♟';
case 'R': return '♖';
case 'N': return '♘';
case 'B': return '♗';
case 'Q': return '♕';
case 'K': return '♔';
case 'P': return '♙';
default: return '';
}
}
return renderChessboard
}