termcol: include named xcolors colours
[sheet.git] / tools / mktermcol-xcolor
index 59c4a259bba9eb630fc3bad646121725f286f09f..f731e5a7048a248eea697134402e7fb0d9ff3036 100755 (executable)
@@ -11,13 +11,16 @@ for my $path (glob 'data/xcolors/themes/*') {
        open my $theme, '<', $path;
        (my $name = $path) =~ s{.*/}{};  # basename
 
-       my @pal;
+       my (%pal, @pal);
        while (readline $theme) {
-               m{ color(\d+) \h* : \h* ( \#(\S+) | rgb:(\S+) ) }x or next;
-               my ($idx, $val) = ($1, uc $+);
-               $idx < 16 or next;
+               m{
+                       (?: (foreground | background) | color(\d+) ) \h* : \h*
+                       (?: \#(\S+) | rgb:(\S+) )
+               }x or next;
+               my ($name, $idx, $val) = ($1, $2, uc $+);
+               $name or $idx < 16 or next;
                $val =~ s/[^0-9A-F]//g;
-               $pal[$idx] = $val;
+               ($name ? $pal{$name} : $pal[$idx]) = $val;
        }
 
        my $huesum = 0;
@@ -38,6 +41,7 @@ for my $path (glob 'data/xcolors/themes/*') {
        say qq(\ttitle => '$name',);
        say qq(\tparent => 'cga',);
        say qq(\tlist => [qw(@pal)],);
+       say qq(\t$_ => '$pal{$_}',) for keys %pal;
        say qq(},);
        push @names, $name;
 }