Portable Game Notation (PGN) implementation in .NET
C# F# PowerShell
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
external
resources
src
test
tools
.gitignore
LICENSE
README.md
pgn.NET.png

README.md

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

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