X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FSearchMsg.pm;h=7561e7f2767071f4266caee84fad56fff5f283ca;hb=5698652dad325668382eb9c55d8d94c9b3672352;hp=ceb6edadded21431bf2ca3793b254ee0b1fcd7b7;hpb=b0e5062d43a96372801713ef78a78d6a1bc852bc;p=public-inbox.git
diff --git a/lib/PublicInbox/SearchMsg.pm b/lib/PublicInbox/SearchMsg.pm
index ceb6edad..7561e7f2 100644
--- a/lib/PublicInbox/SearchMsg.pm
+++ b/lib/PublicInbox/SearchMsg.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2018 all contributors
+# Copyright (C) 2015-2019 all contributors
# License: AGPL-3.0+
# based on notmuch, but with no concept of folders, files or flags
#
@@ -8,6 +8,8 @@
package PublicInbox::SearchMsg;
use strict;
use warnings;
+use base qw(Exporter);
+our @EXPORT_OK = qw(subject_normalized);
use PublicInbox::MID qw/mid_clean mid_mime/;
use PublicInbox::Address;
use PublicInbox::MsgTime qw(msg_timestamp msg_datestamp);
@@ -23,12 +25,6 @@ sub wrap {
bless { mid => $mid }, $class;
}
-sub get {
- my ($class, $head, $db, $mid) = @_;
- my $doc_id = $head->get_docid;
- load_expand(wrap($class, $mid), $db->get_document($doc_id));
-}
-
sub get_val ($$) {
my ($doc, $col) = @_;
Search::Xapian::sortable_unserialise($doc->get_value($col));
@@ -111,8 +107,8 @@ sub __hdr ($$) {
return $val if defined $val;
my $mime = $self->{mime} or return;
- $val = $mime->header($field);
- $val = '' unless defined $val;
+ my @raw = $mime->header($field);
+ $val = join(', ', @raw);
$val =~ tr/\t\n/ /;
$val =~ tr/\r//d;
$self->{$field} = $val;
@@ -185,4 +181,16 @@ sub mid ($;$) {
sub _extract_mid { mid_clean(mid_mime($_[0]->{mime})) }
+our $REPLY_RE = qr/^re:\s+/i;
+
+sub subject_normalized ($) {
+ my ($subj) = @_;
+ $subj =~ s/\A\s+//s; # no leading space
+ $subj =~ s/\s+\z//s; # no trailing space
+ $subj =~ s/\s+/ /gs; # no redundant spaces
+ $subj =~ s/\.+\z//; # no trailing '.'
+ $subj =~ s/$REPLY_RE//igo; # remove reply prefix
+ $subj;
+}
+
1;