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=0a353b2f53070f387ee587d47ac5f1f95cf17ac9;hb=9f21563a34c99c15c3adcd2a72ab0da7cf741bbe;hpb=779a304ce2ba43b18d2467807c4325b52ab4aa90;ds=inline diff --git a/knifeblock-knives-filter b/knifeblock-knives-filter index 0a353b2..17cff74 100755 --- a/knifeblock-knives-filter +++ b/knifeblock-knives-filter @@ -1,22 +1,36 @@ -#!/usr/bin/perl -wn +#!/usr/bin/perl -w use strict; +use POSIX; -our $want; +our %want; -BEGIN { - $want = shift @ARGV; - die unless $want =~ m/^\d+$/; -} +our $nknives = 3; -our $drop; +our @part_order = qw(h b l); + +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+ (?!$want )\d+ /; +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; +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 $!; + print or die $!; +}