$row->{$_} //= undef for @$verlist; # ensure stable keys during iteration
while (my ($version, $usage) = each %$row) {
next if defined $supported{$version};
- $_ = paddedver($_) for $version;
- my $next = first { paddedver($_) ge $version } @$verlist; # or next
+ my $next = first { paddedver($_) ge paddedver($version) } @$verlist
+ or warn("No fallback found for $browser v$version; $usage% ignored"), next;
$row->{$next} += $usage;
+ $row->{$version} = 0; # balance browser total
}
}
}
print "\n<tr>";
print '<td>' x 3;
for my $browser (@browsers) {
- printf('<td title="%s"%s>%s',
- join(' ',
- sprintf('%.1f%%', $canihas->{$browser}->{$_} * $usagepct),
- "version $_",
- ),
- (map {
- defined $_ && !$_ && ' class="ex"'
- } $caniuse->{agents}->{$browser}->{verrelease}->{$_}),
- showversions($_),
- ) for @{ $versions{$browser} };
+ for my $_ (@{ $versions{$browser} }) {
+ my $release = $caniuse->{agents}->{$browser}->{verrelease}->{$_};
+ my $future = defined $release;
+ printf('<td title="%s"%s>%s',
+ join(' ',
+ sprintf('%.1f%%', $canihas->{$browser}->{$_} * $usagepct),
+ $future ? 'development' : (),
+ "version $_",
+ ),
+ $future && ' class="ex"',
+ showversions($_),
+ );
+ }
}
print '<td>' x 1;
say '</thead>';
sub showversions {
my @span = ($_[0], @_>1 ? $_[-1] : ());
+ s/-.*// for $span[0];
for (@span) {
s/^\./0./;
s/x$/.*/;
- s/-.*//;
+ s/.*-//;
}
return join('‒', @span);
}