/******************************************************************************
* *
* This file is part of Kokopu, a JavaScript chess library. *
* Copyright (C) 2018-2022 Yoann Le Montagner <yo35 -at- melix.net> *
* *
* This program is free software: you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public License *
* as published by the Free Software Foundation, either version 3 of *
* the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General *
* Public License along with this program. If not, see *
* <http://www.gnu.org/licenses/>. *
* *
******************************************************************************/
'use strict';
var Game = require('./game').Game;
var pgnReadImpl = require('./private_game/pgn_read_impl');
var pgnWriteImpl = require('./private_game/pgn_write_impl');
/**
* PGN parsing function.
*
* @param {string} pgnString String to parse.
* @returns {Database}
*
*//**
*
* PGN parsing function.
*
* @param {string} pgnString String to parse.
* @param {number} gameIndex Only the game corresponding to this index is parsed.
* @returns {Game}
* @throws {module:exception.InvalidPGN}
*/
exports.pgnRead = function() {
// Parse all games (and return a Database object)...
if(arguments.length === 1) {
return pgnReadImpl.readDatabase(arguments[0]);
}
// Parse one game...
else {
return pgnReadImpl.readOneGame(arguments[0], arguments[1]);
}
};
/**
* PGN writing function.
*
* @param {Game} game Game to write.
* @returns {string}
*
*//**
*
* PGN writing function.
*
* @param {Game[]} games Games to write.
* @returns {string}
*/
exports.pgnWrite = function(input) {
if (input instanceof Game) {
return pgnWriteImpl.writeGames([ input ]);
}
else {
return pgnWriteImpl.writeGames(input);
}
};