browser: transfer usage of unknown version to next row
[sheet.git] / browser.plp
index 27dcb1b4d7213bdb45f181ce4253cf0b5eed8a87..eee60960506b1c6f549c5203d81356a7ba7dd0d4 100644 (file)
@@ -1,7 +1,7 @@
 <(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',
@@ -91,6 +91,20 @@ given ($get{usage} // 'wm') {
        $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;
+               }
+       }
+}
 :>.
 </p>