#!/usr/bin/env perl use 5.010; use Shiar_Sheet::Colour '1.05'; say 'use strict;'; say '+{'; my @names; for my $path (glob 'data/xcolors/themes/*') { open my $theme, '<', $path; (my $name = $path) =~ s{.*/}{}; # basename my @pal; while (readline $theme) { m{ color(\d+) \h* : \h* ( \#(\S+) | rgb:(\S+) ) }x or next; my ($idx, $val) = ($1, uc $+); $idx < 16 or next; $val =~ s/[^0-9A-F]//g; $pal[$idx] = $val; } my $huesum = 0; for my $hue ( sort map { $_->hue } grep { ($_->hsv)[1] > 32 } # ignore unsaturated map { Shiar_Sheet::Colour->new($_) } @pal ) { state $lasthue; $huesum += abs($lasthue - $hue) > .02 if defined $lasthue; $lasthue = $hue; } $huesum > 3 or next; # require number of significant hue changes #TODO tweak to include good-pants, exclude cheesecake-* say qq("$name" => {); say qq(\ttitle => '$name',); say qq(\tparent => 'cga',); say qq(\tlist => [qw(@pal)],); say qq(},); push @names, $name; } say 'xcolor => [', join(', ', map {"'$_'"} @names), '],'; say '}';