Html({
title => 'browser compatibility cheat sheet',
- version => 'v1.0',
+ version => 'v1.1',
description => [
"Compatibility table of new web features (HTML5, CSS3, SVG, Javascript)",
"comparing support and usage share for all popular browser versions.",
],
keywords => [qw'
- web browser support compatibility usage available feature
+ web browser support compatibility usage matrix available feature
html html5 css css3 svg javascript js dom mobile
ie internet explorer firefox chrome safari webkit opera
'],
);
my %CSTATUS = (
unoff => 'l1', # unofficial
- wd => 'l3', # draft
- cr => 'l4', # candidate
- pr => 'l4', # proposed
+ wd => 'l2', # draft
+ cr => 'l3', # candidate
+ pr => 'l3', # proposed
rec => 'l5', # recommendation
- other => 'l2', # non-w3
- ietf => 'l5', # standard
+ ls => 'l4', # whatwg
+ ietf => 'l0', # standard
+ other => 'l0', # non-w3
);
my %versions;
if (my ($somerow) = values %{ $caniuse->{data} }) {
<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} // .5;
+my $minusage = $get{threshold} // .7;
given ($get{usage} // 'wm') {
when (!$_) {
# none
my $header = join('',
'<tr>',
- '<th colspan="3">feature',
+ '<th colspan="3" rowspan="2">feature',
(map {
my $name = $caniuse->{agents}->{$_}->{browser};
sprintf('<th colspan="%d" class="%s" title="%s">%s',
$name,
),
do {
- length $name < 3 + @{ $versions{$_} }*2 ? $name
+ length $name <= (3 * @{ $versions{$_} }) ? $name
: $caniuse->{agents}->{$_}->{abbr};
},
)
} @browsers),
- '<th>%',
+ '<th rowspan="2">%',
);
print '<thead>', $header;
# preceding row without any colspan to work around gecko bug
print "\n<tr>";
-print '<td>' x 3;
for my $browser (@browsers) {
for (@{ $versions{$browser} }) {
my $lastver = $_->[-1];
);
}
}
-print '<td>' x 1;
say '</thead>';
-say '<tfoot>', $header, '</tfoot>';
+say '<tfoot>', $header;
+{
+ # prefix indicates browser family; count adjacent families
+ my (@families, %familycount);
+ for my $browser (@browsers) {
+ my $family = $caniuse->{agents}->{$browser}->{prefix};
+ push @families, $family unless $familycount{$family};
+ $familycount{$family} += @{ $versions{$browser} };
+ }
+
+ print "\n", '<tr class="cat">';
+ printf '<th colspan="%d">%s', $familycount{$_}, $_ for @families;
+}
+say '</tfoot>';
sub featurescore {
# relative amount of support for given feature