font: silence warning when make-ing existing ttfsupport
[sheet.git] / browser.plp
index 85ee802e046a8efcd99992694e3541a2f2ab186c..ad8690f2781e0d4902aae5ac8723befc5e4ae733 100644 (file)
@@ -2,10 +2,11 @@
 use 5.010;
 use utf8;
 use List::Util qw(sum max first);
+no if $] >= 5.018, warnings => 'experimental::smartmatch';
 
 Html({
        title => 'browser compatibility cheat sheet',
-       version => 'v1.1',
+       version => 'v1.2',
        description => [
                "Compatibility table of new web features (HTML5, CSS3, SVG, Javascript)",
                "comparing support and usage share for all popular browser versions.",
@@ -268,8 +269,8 @@ sub featurescore {
                if ($canihas) {
                        while (my ($browser, $versions) = each %$row) {
                                ref $versions eq 'HASH' or next;
-                               while (my ($version, $_) = each %$versions) {
-                                       $rank += ($canihas->{$browser}->{$version} || .001) * $PSTATS{$_};
+                               while (my ($version, $status) = each %$versions) {
+                                       $rank += ($canihas->{$browser}->{$version} || .001) * $PSTATS{$status};
                                }
                        }
                        return $rank;
@@ -293,6 +294,18 @@ sub featurescore {
        return $rank;
 }
 
+sub formatnotes {
+       my @html = @_;
+       for (@html) {
+               s/\h* $//gmx;  # trailing whitespace
+               s/(?<= [^.\n]) $/./gmx;  # consistently end each line by a period
+               Entity($_);
+               s{  ` ([^`]*)  ` }{<code>$1</code>}gx;
+               s{ \[ ([^]]*) \] \( ([^)]*) \) }{<a href="$2">$1</a>}gx;
+       }
+       return @html;
+}
+
 sub saytitlecol {
        my ($id) = @_;
        my $row = $caniuse->{data}->{$id};
@@ -313,9 +326,13 @@ sub saytitlecol {
                );
        } $row->{title};
        print '<div class=aside>';
-       s/\.?$/./, print "<p>$_</p>" for map { ref $_ ? @$_ : $_ || () }
-               Entity($row->{description}),
-               map { s/\s*\n/\n<br>/g; $_ } $row->{notes};
+       print "<p>$_</p>"
+               for formatnotes($row->{description}, $row->{notes} || ());
+       if (my %notes = %{ $row->{notes_by_num} }) {
+               say '<p>Browser-specific notes:';
+               say "<br>#$_: ", formatnotes($notes{$_}) for sort keys %notes;
+               say '</p>';
+       }
        printf 'Resources: %s.', join(', ', map {
                sprintf '<a href="%s">%s</a>', EscapeHTML($_->{url}), $_->{title}
        } @$_) for grep { @$_ } $row->{links} // ();