diff options
Diffstat (limited to 'lib/PublicInbox/Filter/SubjectTag.pm')
-rw-r--r-- | lib/PublicInbox/Filter/SubjectTag.pm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/PublicInbox/Filter/SubjectTag.pm b/lib/PublicInbox/Filter/SubjectTag.pm new file mode 100644 index 00000000..1d281425 --- /dev/null +++ b/lib/PublicInbox/Filter/SubjectTag.pm @@ -0,0 +1,33 @@ +# Copyright (C) 2017 all contributors <meta@public-inbox.org> +# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> + +# Filter for various [tags] in subjects +package PublicInbox::Filter::SubjectTag; +use strict; +use warnings; +use base qw(PublicInbox::Filter::Base); + +sub new { + my ($class, %opts) = @_; + my $tag = delete $opts{-tag}; + die "tag not defined!\n" unless defined $tag && $tag ne ''; + my $self = $class->SUPER::new(%opts); + $self->{tag_re} = qr/\A\s*(re:\s+|)\Q$tag\E\s*/i; + $self; +} + +sub scrub { + my ($self, $mime) = @_; + my $subj = $mime->header('Subject'); + $subj =~ s/$self->{tag_re}/$1/; # $1 is "Re: " + $mime->header_str_set('Subject', $subj); + $self->ACCEPT($mime); +} + +# no suffix/article rejection for mirrors +sub delivery { + my ($self, $mime) = @_; + $self->scrub($mime); +} + +1; |