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

Attachment: pgpTUJrYWbbza.pgp
Description: PGP signature

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;

Reply via email to