For parsing files of chess tournament data into ruby classes.


sudo gem install sanichi-chess_icu --source


A tournament (ICU::Tournament) has two or more players (ICU::Player), and each player has one or more results (ICU::Result).

Tournament objects are created by parsing files of various formats. An instance of a class that can handle the format (see below for the available classes) is first created, and then it's parse or parse! method is called with the file's contents as the only argument.

require 'chess_icu'
data = open('tournament.txt') { |f| }
parser =  # substitute the name of an available parser (see below) for "Parser"
tournament = parser.parse(data)

On success, the parse method returns an object of type ICU::Tournament. On error, it returns nil and an error message can be retrieved from the parser instance:

parser.error  # => error message or nil on success

Alternatively, if an exception is preferred on error, the parse! method can be used:

tournament = parser.parse!(data)

The currently available parsers are:

  • ICU::Tournament::Krause - the format used by FIDE

  • ICU::Tournament::ForeignCSV - used by Irish players to report their individual results in foreign tournaments


Future versions of this software will be able to parse additional file formats (such as SwissPerfect).


Mark Orr, rating officer for the Irish Chess Union (ICU).