The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Chess::FIDE - Perl extension for FIDE Rating List

SYNOPSIS

  use Chess::FIDE;
  my $fide = Chess::FIDE->new(-file=>'filename');
  my @results = $fide->fideSearch("surname eq 'Kasparov'");
  $fide->dumpPlayer($results[0]);

DESCRIPTION

Chess::FIDE - Perl extension for FIDE Rating List. FIDE is the International Chess Federation that releases a list of its rated members every month. The list contains about five hundred thousand entries. This module is designed to parse its contents and to search across it using perl expressions. A sample from an up-to-date FIDE list is provided in t/data/test-list-2.txt, while the older list sample is still available in t/data/test-list.txt

METHODS

The following methods are available:

new /Constructor/
 $fide = Chess::FIDE->new(-file => 'localfile');
 $fide = Chess::FIDE->new(-www => 1, [ -proxy=>proxyaddress, -url => URL ]);

There are two types of constructors - one takes a local file and another one retrieves the up-to-date zip file from the FIDE site, unzips it on the fly and parses the output immediately. In case of the second constructor no files are created. Also usage of an optional proxy is possible in the second case. Also a specific URL may be specified to retrieve the file.

Each player entry in the file is scanned against a regexp and then there is a post-parsing as well which is implemented in function parseLine. The entry is then stored in an object defined by the module Chess::FIDE::Player (see its documentation). The whole list of players is stored in the players field of the Chess::FIDE object.

fideSearch
 @result = $fide->fideSearch("perl conditional", [ @arrayref ]);

 Example:
 @result = $fide->fideSearch("surname eq 'Kasparov'");

Searches the fide object for entries satisfying the conditional specified as the argument. The conditional operator MUST be a PERL operator. The first operand must be a valid field of the FIDE rating list. The second operand must be a value within single quotes because the conditional is 'eval'ed against each entry. Any conditional operand including a regexp match that may be eval-ed is valid. For the fields to use in conditionals see Chess::FIDE::Player documentation. Only single condition is supported at this stage. Optionally, an list of Chess::FIDE::Player objects may be supplied to search against, for example you can feed the results of the previous query.

dumpHeader
 print $fide->dumpHeader();

Dumps a ready to use header for a list of players to display.

dumpPlayer
  my @results = $fide->fideSearch("surname eq 'Kasparov'");
  $fide->dumpPlayer($results[0]);

Dumps a player object in the format almost identical to the one it was read from and ready to be re-read if necessary.

AUXILIARY METHODS

load

Load the empty FIDE object with the content specified either in -www or -file switch.

convertOldHeaderNames

Converts names from the headers of old FIDE files to the new ones, where required.

parseHeader

Parse the header of the FIDE file and assign string positions of the detected fields.

parseName

Parse additionally the name of the player and deduct surname and given name from it.

parseLine

Parse a line from the file of FIDE ratings.

parseFile

Parse the file of FIDE ratings.

CAVEATS

The only unique entry is the id field. There are, for example, two "Sokolov, Andrei" entries, so a search by name might be ambiguous.

Please note that the files on FIDE website are available only for the year 2001 and later.

SEE ALSO

Chess::FIDE::Player http://www.fide.com/ Archive::Zip LWP::UserAgent

AUTHOR

Roman M. Parparov, <romm@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2004-2015 by Roman M. Parparov

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.3 or, at your option, any later version of Perl 5 you may have available.

Fide Rating List is Copyright (C) by the International Chess Federation http://www.fide.com