/pgn.net

Portable Game Notation (PGN) implementation in .NET

Primary LanguageC#OtherNOASSERTION

pgn.net

Portable Game Notation (PGN) implementation in .NET

About PGN

Read more about PGN on Wikipedia.

Here is an excellent spec document.

About pgn.NET

pgn.NET is a library which can be used to handle chess games and read/write them in the PGN format. It is implemented in F# and C# and uses FParsec.

To support as many .pgn file formats as possible the parsers try to be as tolerant as possible. It mostly conforms to this specs. However, other than the specification says we use UTF-8 as encoding, cause it's the 21st century.

How To Use

using ilf.pgn;
using ilf.pgn.Data;

// ...

//READ FILE
var reader = new PgnReader();
var gameDb = reader.ReadFromFile("Tarrasch.pgn");

Game game = gameDb.Games[0];

Console.WriteLine(game);

Installation

You can download the NuGet Package or just clone, build and reference the assemblies.

NuGet package via console:

PM> Install-Package pgn.NET

NuGet package in Visual Studio:

Choose your project and open the NuGet Package Manager: vs step1

Search for "pgn.net" in the online directory, then click "Install" on the pgn.net package: vs step2

The project should now reference the pgn.NET assembly

How To Contribute

  1. Fork
  2. Clone
  3. Code
  4. Create Pull Request

Changelog

Bugfix Release 1.1.1

  • Bugfix: Castle should use the letter O rather than the digit 0 (#10)
  • Bugfix: parser recognizes bxc6 as "Bishop captures c6" (#11)
  • FSharp.Core is merged in into the assembly
  • Removed support for wp71 due to FParsec incompatitbilities

Release 1.1

  • Bugfix: zero-length move text bug (IndexOutOfRange)
  • Introduce MoveTextEntryList, a MoveEntry list which provides simplifed access to moves.
  • Change type of Game.MoveText and RAVEntry.MoveText to MoveTextEntryList
  • Add missing API doc
  • Add support for frameworks: net40, net45, wp71

Release 1.0

This is the initial release of pgn.NET, a library to parse PGN chess databases which includes