[PATCH] Make Email::Filter pass the @boxes argument to its triggers

[email protected] (Stefan Kangas) Mon, 31 Jan 2011 04:07:27 +0100
Newsgroups perl.pep
Message-ID <[email protected]>
I realized that there was no way to know where we try to deliver our
email in the triggers called by Email::Filter.

The attached patch fixes that, allowing niceties like:

,----
| sub add_prefix {
|     my ($self, $boxes) = @_;
|     for my box (@$boxes) {
|         if ($box !~ /^$box_prefix/) {
|             $box = $box_prefix . $dir;
|         }
|     }
| }
| 
| Email::Filter->add_trigger(before_accept => \&add_prefix);
`----

I am sure you can think of other uses.

Cheers,
Stefan Kangas
signature.asc (application/pgp-signature, 489 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iQEcBAEBAgAGBQJNRidvAAoJEC1OH+lZVxNd4n8IAKHLB075xROg84EcP/mAonp2
XS4IaieJ3Dgc8cT8ca6CSRdzTjNJjz09EJ+4M5FlcyFzvlmkRUMJiyimud3THDVu
jsecbhFSwRRf3zjcFI0MQzG5c6rP12BhJtLXZ+Bx42ixQKQ3iwIRwjWGN3ShSSRc
5l64hg4DrxyfidLIpgLmzg9Fg1A8Uc9oBjvOBjWQWcfwi9MzKq8VVnQTb+xNHeRb
2chD1IkGVLrcL2To5INf2wzRPTxSpFSMRGmfHrEurnGRS+h/HHXjDxi60W/uZ1+X
sgmw1G8/PEE+vGHToeub2Lgok2VIkk1ohZtL6xz8tNLtbz+hlGFsKWJlabnXLqM=
=bEmg
-----END PGP SIGNATURE-----
trigger-arguments.patch (text/x-diff, 1.1 KB)
diff -Naur Email-Filter-1.032/lib/Email/Filter.pm Email-Filter-1.032-skangas//lib/Email/Filter.pm
--- Email-Filter-1.032/lib/Email/Filter.pm	2008-09-15 05:26:26.000000000 +0200
+++ Email-Filter-1.032-skangas//lib/Email/Filter.pm	2011-01-31 03:19:20.000000000 +0100
@@ -266,11 +266,11 @@
 
 sub accept {
     my ($self, @boxes) = @_;
-    $self->call_trigger("before_accept");
+    $self->call_trigger("before_accept", \@boxes);
     # Unparsing and reparsing is so fast we prefer to do that in order
     # to keep to LocalDelivery's clean interface.
     if (Email::LocalDelivery->deliver($self->simple->as_string, @boxes)) {
-        $self->call_trigger("after_accept");
+        $self->call_trigger("after_accept", \@boxes);
         $self->done_ok;
     } else {
         $self->fail_gracefully();
@@ -322,7 +322,7 @@
     my ($self, @program) = @_;
     my $stdout;
     my $string = $self->simple->as_string;
-    $self->call_trigger("pipe");
+    $self->call_trigger("pipe", \@program);
     if (eval {run(\@program, \$string, \$stdout)} ) {
         $self->done_ok;
         return $stdout;