According to Alexis, missing version data indicates "features that people
may have heard of but currently have no implementation at all" and should be
assumed unsupported in all released versions.
sub saybrowsercols {
my ($id, $browser) = @_;
my $data = $caniuse->{data}->{$id}->{stats}->{$browser};
sub saybrowsercols {
my ($id, $browser) = @_;
my $data = $caniuse->{data}->{$id}->{stats}->{$browser};
+ if (ref $data eq 'ARRAY') {
+ # special case for unsupported
+ my $release = $caniuse->{agents}->{$browser}->{verrelease};
+ $data = {
+ map { $_ => defined $release->{$_} ? 'u' : 'n' } keys %$release
+ };
+ }
my ($prev, @span);
for my $ver (@{ $versions{$browser} }, undef) {
my $compare = (
!defined $ver ? undef : # last column if nameless
my ($prev, @span);
for my $ver (@{ $versions{$browser} }, undef) {
my $compare = (
!defined $ver ? undef : # last column if nameless
- ref $data ne 'HASH' ? 'u' : # unsupported if no support hash
+ ref $data ne 'HASH' ? '' : # unclassified if no support hash
$data->{$ver} // $prev # known or inherit from predecessor
// (grep { defined } @{$data}{ @{ $versions{$browser} } })[0]
~~ 'n' && 'n' # first known version is unsupported
$data->{$ver} // $prev # known or inherit from predecessor
// (grep { defined } @{$data}{ @{ $versions{$browser} } })[0]
~~ 'n' && 'n' # first known version is unsupported