browser: update wikimedia mobile browser recognition
[sheet.git] / browser.plp
index c2586774810d4dfd888d09b33b8af6d314ced7ed..beff4a9a99a251344883eb8d660de8f713541def 100644 (file)
@@ -29,6 +29,10 @@ $_->{verrelease} = {
 
 my %CSTATS = (
        'n'   => 'l1',
+       'n d' => 'l2',
+       'n x d' => 'l2 ex',
+       'p d' => 'l2',
+       'a d' => 'l2',
        'y'   => 'l5',
        'y x' => 'l5 ex',
        'a'   => 'l3',
@@ -46,6 +50,7 @@ my %DSTATS = (
        j => 'javascript required',
        a => 'partial',
        y => 'supported',
+       d => 'disabled by default',
        x => sub {
                join(' ',
                        'requires prefix',
@@ -96,7 +101,8 @@ given ($get{usage} // 'wm') {
 if ($usage) { # first() does not work inside given >:(
        # adapt version usage to actual support data
        my %engineuse;  # prefix => usage sum
-       while (my ($browser, $row) = each %$canihas) {
+       for my $browser (keys %versions) {
+               my $row = $canihas->{$browser} // {};
                my $verlist = $versions{$browser} or next;
                my %supported = map { $_ => 1 } @$verlist;
 
@@ -111,7 +117,7 @@ if ($usage) { # first() does not work inside given >:(
                }
 
                # build row list for each version
-               if ($minusage = $get{threshold} // .2) {
+               if ($minusage = $get{threshold} // .5) {
                        my @vershown;  # $verlist replacement
                        my ($rowusage, @verrow) = (0);  # replacement row tracking
                        for (@$verlist) {
@@ -306,7 +312,8 @@ sub saystatuscol {
 
 sub saybrowsercols {
        my ($id, $browser) = @_;
-       my $data = $caniuse->{data}->{$id}->{stats}->{$browser};
+       my $feature = $caniuse->{data}->{$id};
+       my $data = $feature->{stats}->{$browser};
        if (ref $data eq 'ARRAY') {
                # special case for unsupported
                my $release = $caniuse->{agents}->{$browser}->{verrelease};
@@ -327,7 +334,22 @@ sub saybrowsercols {
                );
                unless (!defined $prev or $prev ~~ $compare) {
                        my $usage = sum(@{ $canihas->{$browser} }{ map { @{$_} } @span });
-                       printf '<td class="%s" colspan="%d" title="%s">%s',
+
+                       # strip #\d note references from support class
+                       my @notes;
+                       push @notes, $feature->{notes_by_num}->{$1}
+                               while $prev =~ s/\h \# (\d+) \b//x;
+
+                       # prepare version hover details
+                       my $title = sprintf('%.1f%% %s', $usage * $usagepct, join(', ',
+                               map { ref $_ eq 'CODE' ? $_->($browser) : $_ }
+                               map { $DSTATS{$_} // () }
+                               map { split / /, $_ }
+                               $prev
+                       ));
+                       $title .= "\n".EscapeHTML($_) for @notes;
+
+                       printf('<td class="%s" colspan="%d" title="%s">%s',
                                join(' ',
                                        X => $CSTATS{$prev},
                                        !$usage ? ('p0') : ('p',
@@ -337,13 +359,9 @@ sub saybrowsercols {
                                        sprintf('pp%02d', $usage / $usagemax),
                                ),
                                scalar @span,
-                               sprintf('%.1f%% %s', $usage * $usagepct, join(', ',
-                                       map { ref $_ eq 'CODE' ? $_->($browser) : $_ }
-                                       map { $DSTATS{$_} // () }
-                                       map { split / /, $_ }
-                                       $prev
-                               )),
+                               $title,
                                showversions($span[0]->[0], @span > 1 ? ($span[-1]->[-1]) : ()),
+                       );
                        undef $prev;
                        @span = ();
                }
@@ -398,7 +416,7 @@ sub showversions {
        <table class="glyphs"><tr>
        <td class="X l5">supported
        <td class="X l3">partial
-       <td class="X l2">external (js/plugin)
+       <td class="X l2">optional
        <td class="X l1">missing
        <td class="X l0">unknown
        <td class="X ex">prefixed