]> Sergey Matveev's repositories - public-inbox.git/commitdiff
watchmaildir: hoist out compile_watchheaders
authorEric Wong <e@yhbt.net>
Sat, 27 Jun 2020 10:03:31 +0000 (10:03 +0000)
committerEric Wong <e@yhbt.net>
Sun, 28 Jun 2020 22:27:10 +0000 (22:27 +0000)
It's too deeply indented, and we will be using it for IMAP, too.

lib/PublicInbox/WatchMaildir.pm

index 7ca35403517ecd82e9e1a08f72c21c1d0234b08c..496199c90f57a2d955d98fd07c0abc2a8659ab25 100644 (file)
@@ -13,6 +13,29 @@ use PublicInbox::Filter::Base qw(REJECT);
 use PublicInbox::Spamcheck;
 *mime_from_path = \&PublicInbox::InboxWritable::mime_from_path;
 
+sub compile_watchheaders ($) {
+       my ($ibx) = @_;
+       my $watch_hdrs = [];
+       if (my $whs = $ibx->{watchheader}) {
+               for (@$whs) {
+                       my ($k, $v) = split(/:/, $_, 2);
+                       # XXX should this be case-insensitive?
+                       # Or, mutt-style, case-sensitive iff
+                       # a capital letter exists?
+                       push @$watch_hdrs, [ $k, qr/\Q$v\E/ ];
+               }
+       }
+       if (my $list_ids = $ibx->{listid}) {
+               for (@$list_ids) {
+                       # RFC2919 section 6 stipulates
+                       # "case insensitive equality"
+                       my $re = qr/<[ \t]*\Q$_\E[ \t]*>/i;
+                       push @$watch_hdrs, ['List-Id', $re ];
+               }
+       }
+       $ibx->{-watchheaders} = $watch_hdrs if scalar @$watch_hdrs;
+}
+
 sub new {
        my ($class, $config) = @_;
        my (%mdmap, @mdir, $spamc);
@@ -58,27 +81,7 @@ sub new {
 
                my $watch = $ibx->{watch} or return;
                if (is_maildir($watch)) {
-                       my $watch_hdrs = [];
-                       if (my $whs = $ibx->{watchheader}) {
-                               for (@$whs) {
-                                       my ($k, $v) = split(/:/, $_, 2);
-                                       # XXX should this be case-insensitive?
-                                       # Or, mutt-style, case-sensitive iff
-                                       # a capital letter exists?
-                                       push @$watch_hdrs, [ $k, qr/\Q$v\E/ ];
-                               }
-                       }
-                       if (my $list_ids = $ibx->{listid}) {
-                               for (@$list_ids) {
-                                       # RFC2919 section 6 stipulates
-                                       # "case insensitive equality"
-                                       my $re = qr/<[ \t]*\Q$_\E[ \t]*>/i;
-                                       push @$watch_hdrs, ['List-Id', $re ];
-                               }
-                       }
-                       if (scalar @$watch_hdrs) {
-                               $ibx->{-watchheaders} = $watch_hdrs;
-                       }
+                       compile_watchheaders($ibx);
                        my $new = "$watch/new";
                        my $cur = "$watch/cur";
                        push @mdir, $new unless $uniq{$new}++;