Do not compile usage data to shown browser versions, as the latter list
changes over time. Instead find next number present for unknown versions
during runtime.
Fixes counting of old versions dropped in last release, and prepares for
upcoming changes.
<(common.inc.plp)><:
use 5.010;
use utf8;
<(common.inc.plp)><:
use 5.010;
use utf8;
-use List::Util qw(sum max);
+use List::Util qw(sum max first);
Html({
title => 'browser compatibility cheat sheet',
Html({
title => 'browser compatibility cheat sheet',
$ref .= " $_" for $canihas->{-date} || ();
print "\nwith $ref browser usage statistics";
}
$ref .= " $_" for $canihas->{-date} || ();
print "\nwith $ref browser usage statistics";
}
+if ($usage) {
+ # first() does not work inside given >:(
+ while (my ($browser, $row) = each %$canihas) {
+ my $verlist = $versions{$browser} or next;
+ my %supported = map { $_ => 1 } @$verlist;
+ $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
+ $row->{$next} += $usage;
+ }
+ }
+}
($_) = $1 =~ m{^/(\d+)};
continue;
}
($_) = $1 =~ m{^/(\d+)};
continue;
}
- s/\d\d\.\d\K.*// or do {
- # major part only, except for ≥v9.6
- $_ ge '9.6' ? ($_ = '9.6') : (s/\..*//);
- };
+ s/^\d*\.\d\K.*//; # one significant digit
[ '525' => '2' ],
[ '528' => '3' ],
[ '531' => '3.2' ],
[ '525' => '2' ],
[ '528' => '3' ],
[ '531' => '3.2' ],
- [ '531.022' => '4.1' ],
[ '533' => '4.2' ],
[ '534' => '4x' ],
) : (
[ '533' => '4.2' ],
[ '534' => '4x' ],
) : (