chiark / gitweb /
sewing-table: Rename Demo to TestDemo
[reprap-play.git] / knifeblock-knives-filter
1 #!/usr/bin/perl -w
2
3 use strict;
4 use POSIX;
5
6 our %want;
7
8 our $nknives = 3;
9
10 our @part_order = qw(h b l);
11
12 my $want = shift @ARGV;
13 my ($wknife,$wparts) = $want =~ m/^(\d)([a-z]+)$/ or die;
14
15 sub want ($) {
16     my ($colournum) = @_;
17     my $knife = $nknives-1 - ($colournum-1) % $nknives;
18     return 0 unless $knife == $wknife;
19     my $part = $part_order[ floor(($colournum-1) / $nknives) ];
20     die "huh colour $colournum?" unless defined $part;
21     return 0 unless $part =~ m/[$wparts]/o;
22     print STDERR "$0: including colour $colournum ($knife $part)\n";
23     return 1;
24 }
25
26 our $drop;
27 while (<>) {
28     if (m/^\S/) {
29         $drop = 
30             m/^2 5 / ||
31             (m/^(?:3 1|2 3) \d+ \d+ (\d+) / && !want($1));
32     }
33     next if $drop;
34
35     print or die $!;
36 }