X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=knifeblock-knives-filter;h=17cff7401bbd1f0cf8cdafa52a560c4b541a4b27;hp=6dfce6685edce8644c464d1bce02dc3b57cfb648;hb=abe05b69845ac02b78b25602905fecd8a207d47f;hpb=ee4bdadefcce12ebeaf3bd15563bb66bb629975f diff --git a/knifeblock-knives-filter b/knifeblock-knives-filter index 6dfce66..17cff74 100755 --- a/knifeblock-knives-filter +++ b/knifeblock-knives-filter @@ -1,25 +1,36 @@ -#!/usr/bin/perl -wn +#!/usr/bin/perl -w use strict; +use POSIX; our %want; -BEGIN { - my $want = shift @ARGV; - my ($part,$knife) = $want =~ m/^([ha])(\d)$/ or die; +our $nknives = 3; - $want{ $knife+1 } = $part =~ m/[h]/; - $want{ $knife+4 } = $part =~ m/[ha]/; -} +our @part_order = qw(h b l); -our $drop; +my $want = shift @ARGV; +my ($wknife,$wparts) = $want =~ m/^(\d)([a-z]+)$/ or die; -if (m/^\S/) { - $drop = - m/^2 / || - (m/^3 \d+ \d+ \d+ (\d+) / && !$want{$1}); +sub want ($) { + my ($colournum) = @_; + my $knife = $nknives-1 - ($colournum-1) % $nknives; + return 0 unless $knife == $wknife; + my $part = $part_order[ floor(($colournum-1) / $nknives) ]; + die "huh colour $colournum?" unless defined $part; + return 0 unless $part =~ m/[$wparts]/o; + print STDERR "$0: including colour $colournum ($knife $part)\n"; + return 1; } -next if $drop; - -print or die $!; +our $drop; +while (<>) { + if (m/^\S/) { + $drop = + m/^2 5 / || + (m/^(?:3 1|2 3) \d+ \d+ (\d+) / && !want($1)); + } + next if $drop; + + print or die $!; +}