+sub load_doc {
+ my ($class, $doc) = @_;
+ my $self = bless { doc => $doc }, $class;
+ $self->load_expand;
+}
+
+# :bytes and :lines metadata in RFC 3977
+sub bytes ($) { $_[0]->{bytes} }
+sub lines ($) { $_[0]->{lines} }
+sub num ($) { $_[0]->{num} ||= _get_term_val($_[0], 'XNUM', qr/\AXNUM/) }
+
+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;