chesszebra / portable-game-notation
A PHP library to parse and write chess games in the portable game notation (PGN) format.
1.1.1
2022-02-22 21:20 UTC
Requires
- php: ^7.1
- chesszebra/standard-algebraic-notation: ^1.4
Requires (Dev)
- phpunit/phpunit: ^6.4
- squizlabs/php_codesniffer: ^3.1
README
A PHP library to parse and write chess games in the portable game notation (PGN) format.
Installation
Via composer
composer require chesszebra/portable-game-notation
Usage
Reading
From a string
Reading a single PGN game from a string:
use ChessZebra\PortableGameNotation\Reader\StringReader; $reader = new StringReader('1. e4 e5'); $tokenIterator = $reader->read();
From a stream
Reading a single PGN game from a stream:
use ChessZebra\PortableGameNotation\Reader\StringReader; $reader = new StreamReader(fopen('games.pgn', 'r')); $tokenIterator = $reader->read();
Writing
To a string
Wriring a PGN game to a string:
use ChessZebra\PortableGameNotation\TokenIterator; use ChessZebra\PortableGameNotation\Token\StandardAlgebraicNotation; use ChessZebra\PortableGameNotation\Writer\StringWriter; use ChessZebra\StandardAlgebraicNotation\Notation; $tokenIterator = new TokenIterator([ new MoveNumber(1), new StandardAlgebraicNotation(new Notation('e4')), ]); $writer = new StringWriter(); $writer->write($tokenIterator); $pgn = $writer->getPgn();
To a stream
Wriring a PGN game to a stream:
use ChessZebra\PortableGameNotation\TokenIterator; use ChessZebra\PortableGameNotation\Token\StandardAlgebraicNotation; use ChessZebra\PortableGameNotation\Writer\Stream; use ChessZebra\StandardAlgebraicNotation\Notation; $tokenIterator = new TokenIterator([ new MoveNumber(1), new StandardAlgebraicNotation(new Notation('e4')), ]); $writer = new Stream(fopen('game.pgn', 'w')); $writer->write($tokenIterator);
Tokenizing games
From a string
use ChessZebra\PortableGameNotation\Lexer\StringLexer; $lexer = new StringLexer('1. e4'); $token = $lexer->getNextToken();
From a resource
use ChessZebra\PortableGameNotation\Lexer\StreamLexer; $lexer = new StreamLexer(fopen('my-games.pgn', 'r')); $token = $lexer->getNextToken();
Contributing
Please see CONTRIBUTING and CONDUCT for details.
Security
If you discover any security related issues, please report them via HackerOne.
License
The MIT License (MIT). Please see License File for more information.