13 next unless m/^ R/..0;
15 if (m/^\s+\|[-+]+\s*$/) {
20 my @entries = split /\|/, $';
21 $nboxcols ||= @entries;
22 $nboxcols >= @entries or die;
23 foreach my $cboxcol (0..$#entries) {
24 my $headix = $cboxcol + $cboxrow * $nboxcols;
25 $boxheads[$headix] //= '';
26 $boxheads[$headix] .= $entries[$cboxcol];
31 s/\s+$// foreach @boxheads;
33 my @specials = qw(Exhausted Surplus Threshold);
34 foreach my $si (0..$#specials) {
35 my $hi = @boxheads - @specials + $si;
36 die "$si $hi $boxheads[$hi] ?" unless $boxheads[$hi] eq $specials[$si];
37 $boxheads[$hi] .= " "; # disambiguates
49 die unless (scalar keys %vals) == @boxheads;
50 foreach my $k (sort grep { m/\S/ } keys %vals) {
51 print " candidate %10s : %20s votes\n" or die $!;
53 my $quota = $vals{'Threshold '};
54 if ($donequota ne $quota) {
55 print " quota %10d\n", $quota;
58 my $surplus = $vals{'Surplus '};
59 if ($surplus ne '0') {
60 print " surplus %10d\n", $surplus;
72 die $cboxrow unless $cboxrow >= 0;
73 die $cboxrow unless !!$cboxrow == !!length $1;
75 print "stage Td:\n", $1 or die $!;
77 my @entries = split /\|/, $';
78 $nboxcols >= @entries or die;
79 foreach my $cboxcol (0..$#entries) {
80 my $headix = $cboxcol + $cboxrow * $nboxcols;
81 my $h = $boxheads[$headix];
83 die if exists $vals{$h};
84 my $e = $entries[$cboxcol];
86 $e =~ m/^\d*\.\d*$/ or die;