X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/36e1441fd2e594b24504b85e214b19616d9f1d4f..767fa1a306e3c4aa810024de9c2b2c9c30dbca0b:/browser.plp
diff --git a/browser.plp b/browser.plp
index 49c3ec2..7d78670 100644
--- a/browser.plp
+++ b/browser.plp
@@ -80,7 +80,33 @@ print '
';
print '' x $_ for 2, map { scalar @{ $versions{$_} } } @browsers;
print "\n";
-for my $id (keys %{ $caniuse->{data} }) {
+sub featurerank {
+ # relative amount of support for given feature
+ state $statspts = { y=>10, 'y x'=>9, a=>5, j=>2, p=>1 };
+ my ($id) = @_;
+ my $rank = 0;
+ if (my $row = $caniuse->{data}->{$id}->{stats}) {
+ while (my ($browser, $vercols) = each %versions) {
+ my $div = 0; # multiplier exponent (decreased to lower value)
+ my @vers = map { $row->{$browser}->{$_} } @$vercols;
+ if (my $current = $caniuse->{agents}->{$browser}->{versions}->[-3]) {
+ my @future; # find upcoming releases (after current)
+ for (reverse @$vercols) {
+ last if $_ eq $current;
+ push @future, pop @vers;
+ $_ eq 'u' and $_ = $vers[-1] for $future[-1]; # inherit latest value if unknown
+ }
+ splice @vers, -1, 0, @future; # move ahead to decrease precedence
+ }
+ $rank += $statspts->{$_} * 2**($div--) for reverse @vers;
+ }
+ }
+ return $rank;
+}
+
+for my $id (sort {
+ featurerank($b) <=> featurerank($a)
+} keys %{ $caniuse->{data} }) {
my $row = $caniuse->{data}->{$id};
my $data = $row->{stats} or next; # skip metadata [summary]
printf ' |
', $id;
@@ -102,6 +128,7 @@ for my $id (keys %{ $caniuse->{data} }) {
$prev = $ver;
}
}
+ print '', int featurerank($id);
}
print '';
|