browser: include perl data prepared by converter script
[sheet.git] / browser.plp
index 5afabaf08331ccb5046094d04aa3ec2f5db52aa4..16aad08a1a93afb61e6b44df04c947526043ab11 100644 (file)
@@ -9,7 +9,7 @@ Html({
                "caniuse.",
        keywords => [qw'html css browser feature'],
        stylesheet => [qw'light dark circus mono red'],
-       data => ['caniuse.js'],
+       data => ['browser-support.inc.pl'],
 });
 
 :>
@@ -20,29 +20,7 @@ with <a href="http://stats.wikimedia.org/archive/squid_reports/">Wikimedia</a>
 browser usage statistics.</p>
 
 <:
-use JSON;
-use File::Slurp 'read_file';
-my $source = read_file('caniuse.js');
-for ($source) { # cleanup
-       # convert seperate variables to hash keys
-       s/\A/{/;
-       s/^caniuse\.(\w+) = /"$1":/gm;
-       s/;$/,/gm;
-       s/,\s*\Z/\n}/;
-       # fractions not supported by barekey
-       s/(?<=[,{]) (\d*\.\d) (?=:')/"$1"/gx;
-       # escapes not supported in singlequote
-       s{'((?:[^\\']+|\\.)*)'}{
-               my $_ = $1;
-               s/"/\\"/g;
-               s/\\'/'/g;
-               qq("$_");
-       }ge;
-}
-my $caniuse = from_json($source, {
-#      allow_singlequote => 1,
-       allow_barekey => 1,
-});
+my $caniuse = do 'browser-support.inc.pl' or die $! || $@;
 
 my %CSTATS = (
        n => 'di-b',
@@ -83,13 +61,23 @@ print "\n";
 
 print '<thead><tr>';
 print '<th colspan="3">feature';
-printf '<th colspan="%d">%s',
-       scalar @{ $versions{$_} }, $caniuse->{agents}->{$_}->{browser}
-               for @browsers;
+printf('<th colspan="%d">%s',
+       scalar @{ $versions{$_} },
+       do {
+               my $name = $caniuse->{agents}->{$_}->{browser};
+               length $name < 16 ? $name : $caniuse->{agents}->{$_}->{abbr};
+       },
+) for @browsers;
 print '<th>%';
 # preceding row without any colspan to work around gecko bug
-print '<tr>';
-print '<td>' x $_ for 3, (map { scalar @{ $versions{$_} } } @browsers), 1;
+print "\n<tr>";
+print '<td>' x 3;
+for my $browser (@browsers) {
+       printf('<td title="%.1f%%">%s',
+               $canihas->{$browser}->{$_}, showversions($_),
+       ) for @{ $versions{$browser} };
+}
+print '<td>' x 1;
 print "</thead>\n";
 
 sub featurescore {
@@ -155,7 +143,7 @@ for my $id (sort {
                                        ),
                                        scalar @span,
                                        $usage,
-                                       showversions(\@span),
+                                       showversions(@span),
                                undef $prev;
                                @span = ();
                        }
@@ -177,13 +165,12 @@ sub paddedver {
 }
 
 sub showversions {
-       my ($span) = @_;
-       splice @$span, 1, -1;
-       for (@$span) {
+       my @span = ($_[0], @_>1 ? $_[-1] : ());
+       for (@span) {
                s/^\./0./;
                s/x$/.*/;
        }
-       return join('‒', @$span);
+       return join('‒', @span);
 }
 
 :>