]> git.sesse.net Git - remoteglot/blobdiff - remoteglot.pl
Make all clock data be in seconds internally, moving the clock formatting to the...
[remoteglot] / remoteglot.pl
index 86c447489e2f095f8a5d7eb8a439a258ca62e693..a94a618035eea6860c40f11afbb9fc6271436e44 100755 (executable)
@@ -996,11 +996,8 @@ sub extract_clock {
        # Look for extended PGN clock tags.
        my $tags = $pgn->tags;
        if (exists($tags->{'WhiteClock'}) && exists($tags->{'BlackClock'})) {
-               $pos->{'white_clock'} = $tags->{'WhiteClock'};
-               $pos->{'black_clock'} = $tags->{'BlackClock'};
-
-               $pos->{'white_clock'} =~ s/\b(\d)\b/0$1/g;
-               $pos->{'black_clock'} =~ s/\b(\d)\b/0$1/g;
+               $pos->{'white_clock'} = hms_to_sec($tags->{'WhiteClock'});
+               $pos->{'black_clock'} = hms_to_sec($tags->{'BlackClock'});
                return;
        }
 
@@ -1018,12 +1015,9 @@ sub extract_clock {
            $comments->{$white_key} =~ /(?:tl=|clk )(\d+:\d+:\d+)/ &&
            $comments->{$black_key} =~ /(?:tl=|clk )(\d+:\d+:\d+)/) {
                $comments->{$white_key} =~ /(?:tl=|clk )(\d+:\d+:\d+)/;
-               $pos->{'white_clock'} = $1;
+               $pos->{'white_clock'} = hms_to_sec($1);
                $comments->{$black_key} =~ /(?:tl=|clk )(\d+:\d+:\d+)/;
-               $pos->{'black_clock'} = $1;
-
-               $pos->{'white_clock'} =~ s/\b(\d)\b/0$1/g;
-               $pos->{'black_clock'} =~ s/\b(\d)\b/0$1/g;
+               $pos->{'black_clock'} = hms_to_sec($1);
                return;
        }
 
@@ -1031,6 +1025,13 @@ sub extract_clock {
        delete $pos->{'black_clock'};
 }
 
+sub hms_to_sec {
+       my $hms = shift;
+       return undef if (!defined($hms));
+       $hms =~ /(\d+):(\d+):(\d+)/;
+       return $1 * 3600 + $2 * 60 + $3;
+}
+
 sub find_clock_start {
        my $pos = shift;
 
@@ -1070,8 +1071,7 @@ sub find_clock_start {
                # No clock information.
                return;
        }
-       $pos->{$key} =~ /(\d+):(\d+):(\d+)/;
-       my $time_left = $1 * 3600 + $2 * 60 + $3;
+       my $time_left = $pos->{$key};
        $clock_target_for_pos{$id} = time + $time_left;
        if ($pos->{'toplay'} eq 'W') {
                $pos->{'white_clock_target'} = $clock_target_for_pos{$id};