use warnings;
use base qw(Exporter);
our @EXPORT_OK = qw(subject_normalized);
-use PublicInbox::MID qw/mid_clean mid_mime/;
+use PublicInbox::MID qw/mid_mime/;
use PublicInbox::Address;
use PublicInbox::MsgTime qw(msg_timestamp msg_datestamp);
use Time::Local qw(timegm);
}
sub to_doc_data {
- my ($self, $oid, $mid0) = @_;
- $oid = '' unless defined $oid;
+ my ($self) = @_;
join("\n",
$self->subject,
$self->from,
$self->references,
$self->to,
$self->cc,
- $oid,
- $mid0,
+ $self->{blob},
+ $self->{mid},
$self->{bytes} // '',
$self->{lines} // ''
);
sub __hdr ($$) {
my ($self, $field) = @_;
- my $val = $self->{$field};
- return $val if defined $val;
-
- my $mime = $self->{mime} or return;
- my @raw = $mime->header($field);
- $val = join(', ', @raw);
- $val =~ tr/\t\n/ /;
- $val =~ tr/\r//d;
- $self->{$field} = $val;
+ $self->{lc($field)} //= do {
+ my $mime = $self->{mime} or return;
+ my $val = join(', ', $mime->header($field));
+ $val =~ tr/\r//d;
+ $val =~ tr/\t\n/ /;
+ $val;
+ };
}
-sub subject ($) { __hdr($_[0], 'subject') }
-sub to ($) { __hdr($_[0], 'to') }
-sub cc ($) { __hdr($_[0], 'cc') }
+sub subject ($) { __hdr($_[0], 'Subject') }
+sub to ($) { __hdr($_[0], 'To') }
+sub cc ($) { __hdr($_[0], 'Cc') }
# no strftime, that is locale-dependent and not for RFC822
my @DoW = qw(Sun Mon Tue Wed Thu Fri Sat);
sub from ($) {
my ($self) = @_;
- my $from = __hdr($self, 'from');
+ my $from = __hdr($self, 'From');
if (defined $from && !defined $self->{from_name}) {
my @n = PublicInbox::Address::names($from);
$self->{from_name} = join(', ', @n);
$rv;
} else {
die "NO {mime} for mid\n" unless $self->{mime};
- $self->_extract_mid; # v1 w/o Xapian
+ mid_mime($self->{mime}) # v1 w/o Xapian
}
}
-sub _extract_mid { mid_clean(mid_mime($_[0]->{mime})) }
-
our $REPLY_RE = qr/^re:\s+/i;
sub subject_normalized ($) {