-sub subject {
- my ($self) = @_;
- my $subj = $self->{subject};
- return $subj if defined $subj;
- $subj = $self->{mime}->header('Subject');
- $subj = '' unless defined $subj;
- $subj =~ tr/\n/ /;
- $self->{subject} = $subj;
+# :bytes and :lines metadata in RFC 3977
+sub bytes ($) { get_val($_[0]->{doc}, &PublicInbox::Search::BYTES) }
+sub lines ($) { get_val($_[0]->{doc}, &PublicInbox::Search::LINES) }
+sub num ($) { get_val($_[0]->{doc}, &PublicInbox::Search::NUM) }
+
+sub __hdr ($$) {
+ my ($self, $field) = @_;
+ my $val = $self->{$field};
+ return $val if defined $val;
+
+ my $mime = $self->{mime} or return;
+ $val = $mime->header($field);
+ $val = '' unless defined $val;
+ $val =~ tr/\n/ /;
+ $val =~ tr/\r//d;
+ $self->{$field} = $val;