- if (my $colours = $info->{list}) {
- if (my $reorder = $info->{ansiorder} and $get{v}) {
- $colours = [ map { $colours->[$_] =~ s/:|$/:$_/r } @{$reorder} ];
+ if (my $palette = $info->{list}) {
+ my $colours = colorder($palette, $reorder);
+
+ my $rows = 8;
+ my $columns = ceil(@{$palette} / $rows);
+
+ say '<table class=color>';
+ say sprintf '<caption>%s</caption>', $caption;
+ for my $row (0 .. $rows - 1) {
+ print '<tr>';
+ for my $col (0 .. $columns - 1) {
+ my $num = $row + $col * $rows;
+ my ($rgb, $name) = split /:/, $colours->[$num], 3;
+ $name //= $rgb && $num;
+ $name = [ $name, [] ] if $term =~ /^msx/ and !$name; # no bg for transparency
+ $name = [ $name, ['#333'] ] if $term eq 'xkcd';
+ print colcell($name, $rgb);
+ }