#!/usr/bin/perl package Mail::Summary::Tools::ThreadFilter; use Moose; has filters => ( isa => "ArrayRef", is => "rw", required => 1, auto_deref => 1, ); sub filter { my ( $self, %params ) = @_; my $threads = $params{threads} || die "no threads";; my $cb = $params{callback} || die "no callback"; thread: foreach my $thread ( $threads->sortedAll ) { foreach my $filter ( $self->filters ) { next thread unless $filter->( $thread ); } $cb->($thread); } } __PACKAGE__; __END__ =pod =head1 NAME Mail::Summary::Tools::ThreadFilter - Filter Mail::Box::Thread::Node objects =head1 SYNOPSIS # don't use it directly =head1 DESCRIPTION This is just a utility class used by the summary creation code, to limit the scope of the summary. =cut