chiark / gitweb /
b2a26dd24c0925c53cf1ae14f4f051e2338bb6d8
[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 @part_order = qw(h b);
9
10 my $want = shift @ARGV;
11 my ($wknife,$wparts) = $want =~ m/^(\d)([a-z]+)$/ or die;
12
13 sub want ($) {
14     my ($colournum) = @_;
15     my $knife = ($colournum-1) % 3;
16     return 0 unless $knife == $wknife;
17     my $part = $part_order[ floor(($colournum-1) / 3) ];
18     die "huh colour $colournum?" unless defined $part;
19     return 0 unless $part =~ m/[$wparts]/o;
20     print STDERR "$0: including colour $colournum ($knife $part)\n";
21     return 1;
22 }
23
24 our $drop;
25 while (<>) {
26     if (m/^\S/) {
27         $drop = 
28             m/^2 5 / ||
29             (m/^(?:3 1|2 3) \d+ \d+ (\d+) / && !want($1));
30     }
31     next if $drop;
32
33     print or die $!;
34 }