From b152d77b071ee91ab291a636e651356ea42d98a6 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sat, 24 Jan 2015 14:55:34 +0100 Subject: [PATCH] Fix FICS clock parsing. --- Position.pm | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Position.pm b/Position.pm index 6840e7f..b720116 100644 --- a/Position.pm +++ b/Position.pm @@ -28,8 +28,8 @@ sub new { $pos->{'player_b'} = $x[18]; $pos->{'player_w'} =~ s/^W?[FCIG]M//; $pos->{'player_b'} =~ s/^W?[FCIG]M//; - $pos->{'white_clock'} = $x[24]; - $pos->{'black_clock'} = $x[25]; + $pos->{'white_clock'} = _parse_fics_clock($x[24]); + $pos->{'black_clock'} = _parse_fics_clock($x[25]); $pos->{'move_num'} = $x[26]; if ($x[27] =~ /([a-h][1-8])-([a-h][1-8])/) { $pos->{'last_move_uci'} = $1 . $2; @@ -300,4 +300,18 @@ sub _parse_uci_move { return ($from_row, $from_col, $to_row, $to_col, $promo); } +sub _parse_fics_clock { + my $x = shift; + if ($x =~ /^\d+$/) { + my $s = $x % 60; + $x = ($x - $s) / 60; + my $m = $x % 60; + $x = ($x - $m) / 60; + my $h = $x; + return sprintf "%02d:%02d:%02d", $h, $m, $s; + } else { + return $x; + } +} + 1; -- 2.39.2