[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;