chars: query overflow error as debug message
[sheet.git] / browser.plp
index a135d357c861c5279c3b7a27b21eebb5d12ba9b9..a3fa063056dd96a8c4886095b86ba242676f1a33 100644 (file)
@@ -4,7 +4,7 @@ no if $] >= 5.018, warnings => 'experimental::smartmatch';
 
 Html({
        title => 'browser compatibility cheat sheet',
-       version => '1.4',
+       version => '1.5',
        description => [
                "Compatibility table of new web features (HTML5, CSS3, SVG, Javascript)",
                "comparing support and usage share for all popular browser versions.",
@@ -83,8 +83,11 @@ while (my ($browser, $row) = each %{ $caniuse->{agents} }) {
        ];
 }
 
-print <<'';
-<p id="intro">Alternate rendition of Fyrd's <a href="http://caniuse.com/">when can I use...</a> page
+my $ref = showlink('Can I use', 'https://caniuse.com/');
+$ref =~ s/(?=>)/ title="updated $_"/
+       for map { s/[\sT].*//r } $caniuse->{-date} || ();
+$ref = "Fyrd's $ref page";
+say '<p id="intro">Alternate rendition of '.$ref;
 
 my ($canihas, $usage);
 my $minusage = $get{threshold} // 1;
@@ -106,7 +109,7 @@ given ($get{usage} // 'wm') {
        my $ref = $canihas->{-title} || 'unknown';
        $ref = showlink($ref, $_)
                for $canihas->{-site} || $canihas->{-source} || ();
-       $ref .= " $_" for $canihas->{-date} || ();
+       $ref =~ s/(?=>)/ title="updated $_"/ for $canihas->{-date} || ();
        print "\nwith $ref browser usage statistics";
 }
 
@@ -193,11 +196,11 @@ $canihas ||= {
        } @browsers
 }; # fallback hash based on release semantics
 
-my $usagepct = 1;  # score multiplier for 0..100 result
-# normalise usage percentage to only include shown browsers
-$usagepct = 99.99 / featurescore({  # yes for every possible version
-       map { $_ => { map {$_ => 'y'} map { @{$_} } @{$versions{$_}} } } keys %versions
-});
+# score multiplier for percentage of all browser versions
+my $usagepct = 99.99 / sum(
+       map { $_->{-total} // values %{$_} } values %{$canihas}
+);
+
 $_->{usage} = featurescore($_->{stats}) * $usagepct
        for values %{ $caniuse->{data} };
 
@@ -243,7 +246,7 @@ for my $browser (@browsers) {
                                $span->[-1] eq $lastver ? () : '(development)',
                        ),
                        !defined $lastver && ' class="ex"',
-                       showversions($lastver),
+                       showversions($lastver // $span->[0]),
                );
        }
 }
@@ -423,7 +426,7 @@ sub saybrowsercols {
                                ),
                                scalar @span,
                                $title,
-                               showversions($span[0]->[0], @span > 1 ? $span[-1]->[-1] : ()),
+                               showversions($span[0]->[0], @span > 1 && defined $ver ? $span[-1]->[-1] : ()),
                        );
                        undef $prev;
                        @span = ();
@@ -455,9 +458,9 @@ say '</table>';
 
 sub paddedver {
        # normalised version number comparable as string (cmp)
-       shift =~ /(?:.*-|^)(\d*)(.*)/;
+       $_[0] =~ m/(?:.*-|^)(\d*)(.*)/;
        # matched (major)(.minor) of last value in range (a-B)
-       return sprintf('%02d', $1 || 99) . $2;
+       return sprintf('%02d', length $1 ? $1 : 99) . $2;
 }
 
 sub showversions {
@@ -511,5 +514,7 @@ sub showversions {
 </div>
 
 <script type="text/javascript" src="/searchlocal.js"></script>
-<script type="text/javascript"> prependsearch(document.getElementById('intro')) </script>
+<script type="text/javascript"><!--
+       prependsearch(document.getElementById('intro'));
+//--></script>