-sub ensure_metadata {
- my ($self) = @_;
- my $doc = $self->{doc};
- my $i = $doc->termlist_begin;
- my $end = $doc->termlist_end;
-
- unless (defined $PFX2TERM_RE) {
- my $or = join('|', keys %PublicInbox::Search::PFX2TERM_RMAP);
- $PFX2TERM_RE = qr/\A($or)/;
- }
-
- for (; $i != $end; $i->inc) {
- my $val = $i->get_termname;
-
- if ($val =~ s/$PFX2TERM_RE//o) {
- my $field = $PublicInbox::Search::PFX2TERM_RMAP{$1};
- if ($field eq 'references') {
- my $refs = $self->{references} ||= [];
- push @$refs, $val;
- } else {
- $self->{$field} = $val;
- }
- }
- }
-}
-
-# for threading only
-sub mini_mime {
- my ($self) = @_;
- $self->ensure_metadata;
- my @h = (
- Subject => $self->subject,
- 'X-PI-From' => $self->from_name,
- 'X-PI-Date' => $self->date,
- 'X-PI-TS' => $self->ts,
- 'Message-ID' => "<$self->{mid}>",
- );
- if (my $refs = $self->{references}) {
- push @h, References => '<' . join('> <', @$refs) . '>';
- }
- if (my $irt = $self->{inreplyto}) {
- push @h, 'In-Reply-To' => "<$irt>";
- }
-
- Email::MIME->create(header_str => \@h);
-}
-
-sub mid {