termcol: parse Xcolors.net checkout
[sheet.git] / tools / mktermcol-xcolor
1 #!/usr/bin/env perl
2 use 5.010;
3
4 say 'use strict;';
5 say '+{';
6 my @names;
7
8 for my $path (glob 'data/xcolors/themes/*') {
9         open my $theme, '<', $path;
10         (my $name = $path) =~ s{.*/}{};  # basename
11         push @names, $name;
12
13         my @pal;
14         while (readline $theme) {
15                 m{ color(\d+) \h* : \h* ( \#(\S+) | rgb:(\S+) ) }x or next;
16                 my ($idx, $val) = ($1, uc $+);
17                 $idx < 16 or next;
18                 $val =~ s/[^0-9A-F]//g;
19                 $pal[$idx] = $val;
20         }
21
22         say qq("$name" => {);
23         say qq(\ttitle => '$name',);
24         say qq(\tparent => 'cga',);
25         say qq(\tlist => [qw(@pal)],);
26         say qq(},);
27 }
28
29 say 'xcolor => [', join(', ', map {"'$_'"} @names), '],';
30 say '}';