#! /usr/bin/perl -w # Read /etc/X11/rgb.txt # Write javascript code to map color-names to RGB vectors. # All names are mapped to lower case. # Embedded spaces are removed. # Then duplicates are removed. # Note that apparently all names with embedded spaces # are duplicates of names without. use strict; use Symbol; main: { my $ifn = '/etc/X11/rgb.txt'; my $inch = Symbol::gensym; my %done = (); open($inch, '<', $ifn) || die "Could not open input file '$ifn' : $!\n"; liner: while (my $line = <$inch>){ chomp $line; if ($line =~ m'^!') { next liner; } my @stuff = split(' ', $line, 4); my $name = $stuff[3]; $name =~ s' ''g; $name = lc($name); if (!$done{$name}) { $done{$name} = 1; printf("\"%s\":vec(%g, %g, %g),\n", $name, $stuff[0]/255, $stuff[1]/255, $stuff[2]/255); } } }