X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/2ae4ccbb6ac3ce310890beef55fda11f670772bb..bd77795ed44d7b642c66b05e0982bff026fdc68f:/browser.plp diff --git a/browser.plp b/browser.plp index 3f7b6f8..ea23d0a 100644 --- a/browser.plp +++ b/browser.plp @@ -20,6 +20,7 @@ Html({ with Wikimedia browser usage statistics.

+
<: my $caniuse = do 'browser-support.inc.pl' or die $! || $@; @@ -50,9 +51,22 @@ if (my ($somerow) = values %{ $caniuse->{data} }) { } } -my $canihas = do 'browser-usage.inc.pl' or do { +my $canihas = do 'browser-usage.inc.pl' || do { printf "

Browser usage data not found: %s.

\n", $_ for $! || $@; + +{ + map { + $_ => +{ + map { + ($_->[4] => 0 ), # future + ($_->[3] => .5), # next + ($_->[0] => 5 ), # past + ($_->[1] => 10 ), # previous + ($_->[2] => 30 ), # current + } $caniuse->{agents}->{$_}->{versions} + } + } @browsers + }; # fallback hash based on release semantics }; my $scorediv = (max(map { sum(values %$_) } values %$canihas) // 1) / 100; @@ -95,6 +109,7 @@ sub featurescore { if (my $row = shift) { if ($canihas) { while (my ($browser, $versions) = each %$row) { + ref $versions eq 'HASH' or next; while (my ($version, $_) = each %$versions) { $rank += $canihas->{$browser}->{$version} * $statspts->{$_}; } @@ -131,7 +146,14 @@ for my $id (sort { my $cell = $_ ? lc $_->[0] : '-'; print '', $cell; } - printf '%s', $row->{description}, $row->{title}; + print '', $row->{title}; + print '
'; + s/\.?$/./, print "

$_

" for map { ref $_ ? @$_ : $_ || () } + $row->{description}, $row->{notes}; + printf 'Resources: %s.', join(', ', + map { qq($_->{title}) } @$_ + ) for grep { @$_ } $row->{links} // (); + print '
'; for ($row->{status}) { my $cell = $_ // '-'; $cell = sprintf '%s', $_, $cell for $row->{spec} // (); @@ -142,11 +164,15 @@ for my $id (sort { my ($prev, @span); for my $ver (@{ $versions{$browser} }, undef) { unless (!defined $prev - or $data->{$browser}->{$prev} ~~ $data->{$browser}->{$ver}) { + or ref $data->{$browser} eq 'HASH' + && $data->{$browser}->{$prev} ~~ $data->{$browser}->{$ver}) { my $usage = sum(map { $canihas->{$browser}->{$_} } @span); printf '%s', join(' ', - X => $CSTATS{ $data->{$browser}->{$prev} }, + X => $CSTATS{ + ref $data->{$browser} ne 'HASH' ? 'u' : + $data->{$browser}->{$prev} // 'u' + }, !$usage ? ('p0') : ('p', sprintf('p%01d', $usage / 10), sprintf('p%02d', $usage), @@ -174,7 +200,7 @@ print ''; sub paddedver { # normalised version number comparable as string (cmp) shift =~ /^(\d*)(.*)/; - return sprintf('%02d', $1) . $2; + return sprintf('%02d', $1 || 0) . $2; } sub showversions { @@ -186,7 +212,8 @@ sub showversions { return join('‒', @span); } -:> +:>
+
@@ -196,6 +223,7 @@ sub showversions { partial external (js/plugin) missing + unknown