common: fix initial call to setup debug time
[sheet.git] / browser.plp
index 0fc1627cec5eb3265ca13ac16eb34b7d3ed6bc46..de245b8159a8af06e56b140ccfe0dab3d24cbc38 100644 (file)
@@ -1,6 +1,4 @@
 <(common.inc.plp)><:
-use 5.010;
-use utf8;
 use List::Util qw(sum max first);
 no if $] >= 5.018, warnings => 'experimental::smartmatch';
 
@@ -92,22 +90,24 @@ print <<'';
 <p id="intro">Alternate rendition of Fyrd's <a href="http://caniuse.com/">when can I use...</a> page
 
 my ($canihas, $usage);
-my $minusage = $get{threshold} // .7;
+my $minusage = $get{threshold} // 1;
 given ($get{usage} // 'wm') {
        when (!$_) {
                # none
        }
        when (!m{ \A [a-z]\w+ (?:/\d[\d-]*\d)? \z }x) {
-               printf "<p>Invalid browser usage data request: <em>%s</em>",
-                       'identifier must be alphanumeric name or <q>0</q>';
+               Alert([
+                       'Invalid browser usage data request',
+                       'Identifier must be alphanumeric name or <q>0</q>.',
+               ]);
        }
        $canihas = do "data/browser/usage-$_.inc.pl" or do {
-               printf "<p>Browser usage data not found: <em>%s</em>", $@ || $!;
+               Alert('Browser usage data not found', $@ || $!);
                break;
        };
        $usage = $_;
        my $ref = $canihas->{-title} || 'unknown';
-       $ref = sprintf '<a href="%s">%s</a>', $_, $ref
+       $ref = showlink($ref, $_)
                for $canihas->{-site} || $canihas->{-source} || ();
        $ref .= " $_" for $canihas->{-date} || ();
        print "\nwith $ref browser usage statistics";
@@ -311,6 +311,15 @@ sub formatnotes {
        return @html;
 }
 
+sub notestotitle {
+       my @notes = @_;
+       for (@notes) {
+               EscapeHTML($_);
+               s{ \[ ([^]]*) \] \( [^)]* \) }{$1}gx;  # strip link urls
+       }
+       return @notes;
+}
+
 sub saytitlecol {
        my ($id) = @_;
        my $row = $caniuse->{data}->{$id};
@@ -339,10 +348,10 @@ sub saytitlecol {
                say '</p>';
        }
        printf 'Resources: %s.', join(', ', map {
-               sprintf '<a href="%s">%s</a>', EscapeHTML($_->{url}), EscapeHTML($_->{title})
+               showlink($_->{title}, $_->{url})
        } @$_) for grep { @$_ } $row->{links} // ();
        printf '<br>Parent feature: %s.', join(', ', map {
-               sprintf '<a href="%s">%s</a>', EscapeHTML("#$_"), $caniuse->{data}->{$_}->{title}
+               showlink($caniuse->{data}->{$_}->{title}, "#$_")
        } $_) for $row->{parent} || ();
        print '</div>';
 }
@@ -353,7 +362,7 @@ sub saystatuscol {
 
        for ($row->{status}) {
                my $cell = $_ // '-';
-               $cell = sprintf '<a href="%s">%s</a>', $_, $cell for $row->{spec} // ();
+               $cell = showlink($cell, $_) for $row->{spec} // ();
                printf '<td title="%s" class="l %s">%s',
                        $caniuse->{statuses}->{$_}, $CSTATUS{$_} // '', $cell;
        }
@@ -396,7 +405,7 @@ sub saybrowsercols {
                                map { split / /, $_ }
                                $prev
                        ));
-                       $title .= "\n".EscapeHTML($_) for @notes;
+                       $title .= "\n$_" for notestotitle(@notes);
 
                        printf('<td class="%s" colspan="%d" title="%s">%s',
                                join(' ',