Merge pull request #50 from lemonsqueeze/can_countercap
[pachi.git] / tools / board_print_to_sgf
blob45f96c24f06c7cd473a62a81796a1433d8d6c6f3
1 #!/usr/bin/perl
2 # Convert ascii board diagrams from board_print() to sgf.
3 # Usage: ./board_print_to_sgf > foo.sgf
4 # copy paste the diagram, ^D
6 use utf8;
7 binmode STDIN, ":utf8";
8 binmode STDOUT, ":utf8";
10 my $asdf = "abcdefghijklmnopqrstuvwxyz";
12 sub coord2sgf
14 my ($x, $y) = @_;
15 $y = 19 + 1 - $y;
16 return substr($asdf, $x-1, 1) . substr($asdf, $y-1, 1);
19 my $ab = "";
20 my $aw = "";
21 my $size = 0;
22 foreach my $s (<STDIN>)
24 $s =~ s/ยท/./g;
25 # remove current move mark
26 $s =~ s/([OX.])\)/$1 /;
27 if ($s =~ m/^ ([ 1][0-9]) \| (([.OX] )+)\|/ ||
28 $s =~ m/^([ 1][0-9]) *(([.OX] )+) /)
30 my ($l, $s) = ($1, $2);
31 $s =~ s/ //g;
32 my @t = split("", $s);
34 $size = @t;
35 for (my $i = 0; $i < @t; $i++)
37 if ($t[$i] ne "X") { next; }
38 $ab .= sprintf("[%s]", coord2sgf($i+1, $l));
41 for (my $i = 0; $i < @t; $i++)
43 if ($t[$i] ne "O") { next; }
44 $aw .= sprintf("[%s]", coord2sgf($i+1, $l));
49 print "(;\n";
50 print "SZ[$size]\n";
51 print "KM[7.5]\n\n";
52 if ($ab ne "") { print "AB$ab\n"; }
53 if ($aw ne "") { print "AW$aw\n"; }
54 print ")\n";