UNPKG

fentastic

Version:

Validate and parse Forsyth-Edwards Notation (FEN) used to describe a chess game board position.

44 lines (43 loc) 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseEnPassantTargetSquare = exports.validateEnPassantTargetSquare = void 0; const ParseError_js_1 = require("./ParseError.js"); const rankPattern = /[a-h]/gi; const enPassantFilePattern = /3|6/g; const fieldName = 'En passant target square'; const validateEnPassantTargetSquare = (field) => { try { if (!field.tokens.length) { throw new ParseError_js_1.ParseError(fieldName, '', field.delimiter.index, '-|a-h'); } if (field.value === '-') { return field; } if (field.tokens.length !== 2) { throw new ParseError_js_1.ParseError(fieldName, field.tokens.length, field.tokens[0].index, '2', 'field length to be', 'count'); } if (!field.tokens[0].value.match(rankPattern)) { throw new ParseError_js_1.ParseError(fieldName, field.tokens[0].value, field.tokens[0].index, 'a-h'); } if (!field.tokens[1].value.match(enPassantFilePattern)) { throw new ParseError_js_1.ParseError(fieldName, field.tokens[1].value, field.tokens[1].index, '3|6'); } } catch (e) { if (e instanceof ParseError_js_1.ParseError) { field.error = e; } else { throw e; } } return field; }; exports.validateEnPassantTargetSquare = validateEnPassantTargetSquare; const parseEnPassantTargetSquare = (field) => { if (field.value === '-') { return undefined; } return field.value; }; exports.parseEnPassantTargetSquare = parseEnPassantTargetSquare;