termcol: path argument to request custom palettes, groups
[sheet.git] / termcol.plp
index c58670c19e2c98556862f41f87d7bef2b5eb71fa..32a73560285a0fb4a9f096b859b3ee1404536972 100644 (file)
@@ -14,6 +14,19 @@ Html({
        stylesheet => [qw'light dark'],
 });
 
+my @termlist;
+push @termlist, split /\W+/, $ENV{PATH_INFO} || 'default';
+
+my %termgroup = (
+       default => [qw( ansi xkcd ansi88 )],
+       more    => [qw( ansi legacy ansi256 )],
+       msx     => [qw( msx1 msx2 arnejmp )],
+       ansi    => [qw( cga xterm tango app html )],
+       legacy  => [qw( c64 msx2 mac2 risc arnegame cpc )],
+);
+@{$_} = map { $termgroup{$_} ? @{ $termgroup{$_} } : $_ } @{$_}
+       for values %termgroup, \@termlist;
+
 :>
 <h1>Terminal colours</h1>
 
@@ -22,8 +35,8 @@ Html({
 as implemented by various systems and programs.
 <:
 print
-       !exists $get{v} ? 'Also see <a href="?v">8-bit legacy hardware</a> palettes.' :
-       'Also included are 8-bit legacy hardware palettes.';
+       "@termlist" ne "@{ $termgroup{default} }" ? 'Additional palettes are included as specified.' :
+       'Also see <a href="/termcol/more">8-bit legacy hardware</a> palettes.';
 :>
 </p>
 
@@ -55,11 +68,6 @@ sub colcell {
        return "$out\n";
 }
 
-my @termlist = qw( cga xterm tango app html xkcd );
-push @termlist, qw( c64 msx2 mac2 risc arnegame cpc ) if exists $get{v};
-push @termlist, qw( ansi88 );
-push @termlist, qw( ansi256 ) if $ENV{PATH_INFO} =~ /256/;
-
 for my $term (@termlist) {
        my $info = $palettes->{$term};
        ref $info eq 'HASH' or next;
@@ -91,6 +99,7 @@ for my $term (@termlist) {
                for my $num (0 .. $#{$colours}) {
                        my ($rgb, $name) = split /:/, $colours->[$num], 3;
                        $name ||= $num;
+                       $name = [ $name, [] ] if $term =~ /^msx/ and !$num;
                        $name = [ $name, ['#333'] ] if $term eq 'xkcd';
                        print '<tr>', colcell($name, $rgb);
                }