illustrateMoves = () => {
let literal = "";
const prependSpace = () => {
if (literal.length > 0) {
literal += " ";
}
};
const addHalfMove = (move, number) => literal += `<span class="half-move" data-number="${number}">${move.san}</span>`;
const addMove = ([whiteMove, blackMove], number) => {
prependSpace();
literal += `${number}.`;
const whiteMoveNumber = (number * 2) - 1;
addHalfMove(whiteMove, whiteMoveNumber);
if (blackMove !== undefined) {
prependSpace();
const blackMoveNumber = whiteMoveNumber + 1;
addHalfMove(blackMove, blackMoveNumber);
}
};
const moves = getMoves(halfMoves);
moves.forEach((move, index) => addMove(move, index + 1));
const isClosedGame = () => header.Result !== "*";
if (isClosedGame()) {
prependSpace();
literal += ` ${header.Result}`;
}
return md`<code class="movetext">${literal}</code>`;
}