#!/perl/bin/perl # # craftysvg.pl -- script to generate .svg file from Crafty .pgn analysis. use strict; use warnings; use diagnostics; my @scores; my @allscores; my @bestblack; my @bestwhite; my $black; my $level; my $score; my $value; my $previous_level = 0; while (<>) { if (/^\s/) { if (/^\s+(\d+)\./) { $level = 1; $black = ( /\.\.\./ ? '1' : '0' ); s/^\s+//; my @temp = split (/\s+/); unless ( scalar(@temp) == 2 ) { unless ($black) { push ( @allscores, '0,1,0:+0.00' ); push ( @allscores, '0,2,0:+0.00' ); push ( @allscores, '1,1,0:+0.00' ); push ( @allscores, '1,2,0:+0.00' ); } } } elsif (/^\s+\(\{/) { /{(.*?)}/; push ( @allscores, "$black,$level,$1" ); $level++; } } } foreach (@allscores) { ( $black, $level, $score ) = split /,/; $score =~ /:([-+]\d+\.\d+)/; $value = $1; if ( $level == 1 ) { if ( $previous_level == 1 ) { push ( @bestblack, undef ); push ( @bestwhite, undef ); } if ($value) { push ( @scores, $value ); } else { push ( @scores, undef ); } } else { if ($black) { push ( @bestblack, $value ); push ( @bestwhite, undef ); } else { push ( @bestblack, undef ); push ( @bestwhite, $value ); } } $previous_level = $level; }