git.shiar.nl
/
sheet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
word edit: delete empty entries if confirmed
[sheet.git]
/
browser.plp
diff --git
a/browser.plp
b/browser.plp
index c609a576113f195a3986c0e5a54ca388e33b7e9d..80369d9773ecc77fb13c9e5aabc6acd420c0bc41 100644
(file)
--- a/
browser.plp
+++ b/
browser.plp
@@
-4,7
+4,7
@@
no if $] >= 5.018, warnings => 'experimental::smartmatch';
Html({
title => 'browser compatibility cheat sheet',
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.",
description => [
"Compatibility table of new web features (HTML5, CSS3, SVG, Javascript)",
"comparing support and usage share for all popular browser versions.",
@@
-36,11
+36,14
@@
my %CSTATS = (
'p d' => 'l2',
'a d' => 'l2',
'y' => 'l5',
'p d' => 'l2',
'a d' => 'l2',
'y' => 'l5',
+ 'y #' => 'l4',
'y x' => 'l5 ex',
'y x' => 'l5 ex',
+ 'y x #' => 'l4 ex',
'a' => 'l3',
'a x' => 'l3 ex',
'p' => 'l2',
'u' => 'l0',
'a' => 'l3',
'a x' => 'l3 ex',
'p' => 'l2',
'u' => 'l0',
+ 'u d' => 'l2',
);
my %DSTATS = (
u => 'unknown',
);
my %DSTATS = (
u => 'unknown',
@@
-83,8
+86,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;
my ($canihas, $usage);
my $minusage = $get{threshold} // 1;
@@
-106,7
+112,7
@@
given ($get{usage} // 'wm') {
my $ref = $canihas->{-title} || 'unknown';
$ref = showlink($ref, $_)
for $canihas->{-site} || $canihas->{-source} || ();
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";
}
print "\nwith $ref browser usage statistics";
}
@@
-193,11
+199,11
@@
$canihas ||= {
} @browsers
}; # fallback hash based on release semantics
} @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 = 100.01 / 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} };
$_->{usage} = featurescore($_->{stats}) * $usagepct
for values %{ $caniuse->{data} };
@@
-232,18
+238,18
@@
print '<thead>', $header;
# preceding row without any colspan to work around gecko bug
print "\n<tr>";
for my $browser (@browsers) {
# preceding row without any colspan to work around gecko bug
print "\n<tr>";
for my $browser (@browsers) {
- for (@{ $versions{$browser} }) {
+ for
my $span
(@{ $versions{$browser} }) {
my $lastver = first {
!defined $caniuse->{agents}->{$browser}->{verrelease}->{$_} # stable
my $lastver = first {
!defined $caniuse->{agents}->{$browser}->{verrelease}->{$_} # stable
- } reverse @{$
_
};
+ } reverse @{$
span
};
printf('<td title="%s"%s>%s',
join(' ',
printf('<td title="%s"%s>%s',
join(' ',
- sprintf('%.1f%%', sum(@{ $canihas->{$browser} }{
@$_
}) * $usagepct),
- 'version ' . showversions(@{$
_
}, undef),
- $
_
->[-1] eq $lastver ? () : '(development)',
+ sprintf('%.1f%%', sum(@{ $canihas->{$browser} }{
@{$span}
}) * $usagepct),
+ 'version ' . showversions(@{$
span
}, undef),
+ $
span
->[-1] eq $lastver ? () : '(development)',
),
!defined $lastver && ' class="ex"',
),
!defined $lastver && ' class="ex"',
- showversions($lastver),
+ showversions($lastver
// $span->[0]
),
);
}
}
);
}
}
@@
-390,6
+396,10
@@
sub saybrowsercols {
);
unless (!defined $prev or $prev ~~ $compare) {
my @vercover = (map { @{$_} } @span);
);
unless (!defined $prev or $prev ~~ $compare) {
my @vercover = (map { @{$_} } @span);
+ for ($ver ? @{$ver} : ()) {
+ $data->{$_} eq $data->{$vercover[-1]} or last;
+ push @vercover, $_; # matches from next span start
+ }
my $usage = sum(@{ $canihas->{$browser} }{@vercover});
# strip #\d note references from support class
my $usage = sum(@{ $canihas->{$browser} }{@vercover});
# strip #\d note references from support class
@@
-409,6
+419,7
@@
sub saybrowsercols {
));
$title .= "\n$_" for notestotitle(@notes);
));
$title .= "\n$_" for notestotitle(@notes);
+ $prev .= ' #' if @notes and $prev =~ /^y/;
printf('<td class="%s" colspan="%d" title="%s">%s',
join(' ',
X => $CSTATS{$prev},
printf('<td class="%s" colspan="%d" title="%s">%s',
join(' ',
X => $CSTATS{$prev},
@@
-419,7
+430,7
@@
sub saybrowsercols {
),
scalar @span,
$title,
),
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 = ();
);
undef $prev;
@span = ();
@@
-451,9
+462,9
@@
say '</table>';
sub paddedver {
# normalised version number comparable as string (cmp)
sub paddedver {
# normalised version number comparable as string (cmp)
-
shift =~
/(?:.*-|^)(\d*)(.*)/;
+
$_[0] =~ m
/(?:.*-|^)(\d*)(.*)/;
# matched (major)(.minor) of last value in range (a-B)
# 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 {
}
sub showversions {
@@
-470,6
+481,7
@@
sub showversions {
<div class="legend">
<table class="glyphs"><tr>
<td class="X l5">supported
<div class="legend">
<table class="glyphs"><tr>
<td class="X l5">supported
+ <td class="X l4">annotated
<td class="X l3">partial
<td class="X l2">optional
<td class="X l1">missing
<td class="X l3">partial
<td class="X l2">optional
<td class="X l1">missing
@@
-507,5
+519,7
@@
sub showversions {
</div>
<script type="text/javascript" src="/searchlocal.js"></script>
</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>