- printf '<td class="%s">%s', $CSTATS{ $data->{$browser}->{$_} }, $_
- for @{ $caniuse->{agents}->{$browser}->{versions} };
+ my ($prev, @span);
+ for my $ver (@{ $versions{$browser} }, undef) {
+ unless (!defined $prev
+ or $data->{$browser}->{$prev} ~~ $data->{$browser}->{$ver}) {
+ printf '<td class="%s" colspan="%d">%s',
+ $CSTATS{ $data->{$browser}->{$prev} },
+ scalar @span,
+ join('‒', $span[0], @span > 1 ? $span[-1] : ());
+ undef $prev;
+ @span = ();
+ }
+ push @span, $ver;
+ $prev = $ver;
+ }