X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FView.pm;h=11a94ba938636ce28bd8d5373d5e2b3d50c811c6;hb=4fe706e6a86da985755cd101bc52ce813d044554;hp=11ed2d76101376a81ba11d70a20b42ecf479bb6d;hpb=0093503cf22570012b3bafcc0130bfac1ea157bf;p=public-inbox.git diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 11ed2d76..11a94ba9 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -38,7 +38,7 @@ sub msg_page_i { : $ctx->gone('over'); $ctx->{mhref} = ($ctx->{nr} || $ctx->{smsg}) ? "../${\mid_href($smsg->{mid})}/" : ''; - my $obuf = $ctx->{obuf} = _msg_page_prepare_obuf($eml, $ctx); + my $obuf = _msg_page_prepare_obuf($eml, $ctx); if (length($$obuf)) { multipart_text_as_html($eml, $ctx); $$obuf .= '
WARNING: multiple messages have this Message-ID\n"; - $rv .= '
'; +"WARNING: multiple messages have this Message-ID\n"; } else { $ctx->{first_hdr} = $eml->header_obj; $ctx->{chash} = content_hash($eml) if $ctx->{smsg}; # reused MID $rv .= "EOM } if ($ctx->{ibx}->over) {"; # anchor for body start } - $ctx->{-upfx} = '../' if $over; + $ctx->{-upfx} = '../'; my @title; # (Subject[0], From[0]) for my $v ($eml->header('From')) { my @n = PublicInbox::Address::names($v); @@ -704,7 +703,7 @@ sub _msg_page_prepare_obuf { my $v = ascii_html(shift @subj); obfuscate_addrs($obfs_ibx, $v) if $obfs_ibx; $rv .= 'Subject: '; - $rv .= $over ? qq($v\n) : "$v\n"; + $rv .= $have_over ? qq($v\n) : "$v\n"; $title[0] = $v; for $v (@subj) { # multi-Subject message :< $v = ascii_html($v); @@ -712,7 +711,7 @@ sub _msg_page_prepare_obuf { $rv .= "Subject: $v\n"; } } else { # dummy anchor for thread skeleton at bottom of page - $rv .= qq() if $over; + $rv .= qq() if $have_over; $title[0] = '(no subject)'; } for my $v ($eml->header('Date')) { @@ -724,22 +723,22 @@ sub _msg_page_prepare_obuf { $ctx->{-title_html} = join(' - ', @title); $rv = $ctx->html_top . $rv; } + + $ctx->{-linkify} //= PublicInbox::Linkify->new; if (scalar(@$mids) == 1) { # common case my $mhtml = ascii_html($mids->[0]); - $rv .= "Message-ID: <$mhtml> "; - $rv .= "(raw)\n"; + $rv .= qq[Message-ID: <$mhtml> (raw)\n]; } else { # X-Alt-Message-ID can happen if a message is injected from # public-inbox-nntpd because of multiple Message-ID headers. - my $lnk = PublicInbox::Linkify->new; my $s = ''; for my $h (qw(Message-ID X-Alt-Message-ID)) { $s .= "$h: $_\n" for ($eml->header_raw($h)); } - $lnk->linkify_mids('..', \$s, 1); + $ctx->{-linkify}->linkify_mids('..', \$s, 1); $rv .= $s; } - $rv .= _parent_headers($eml, $over); + _parent_headers($ctx, $eml); $rv .= "\n"; \$rv; } @@ -778,7 +777,6 @@ sub thread_skel ($$$) { # when multiple Subject: headers are present, so we follow suit: my $subj = $hdr->header('Subject') // ''; $subj = '(no subject)' if $subj eq ''; - $ctx->{prev_subj} = [ split(/ /, subject_normalized($subj)) ]; $ctx->{cur} = $mid; $ctx->{prev_attr} = ''; $ctx->{prev_level} = 0; @@ -792,35 +790,35 @@ sub thread_skel ($$$) { } sub _parent_headers { - my ($hdr, $over) = @_; - my $rv = ''; + my ($ctx, $hdr) = @_; my @irt = $hdr->header_raw('In-Reply-To'); my $refs; if (@irt) { - my $lnk = PublicInbox::Linkify->new; - $rv .= "In-Reply-To: $_\n" for @irt; - $lnk->linkify_mids('..', \$rv); + my $s = ''; + $s .= "In-Reply-To: $_\n" for @irt; + $ctx->{-linkify}->linkify_mids('..', \$s); + ${$ctx->{obuf}} .= $s; } else { $refs = references($hdr); my $irt = pop @$refs; if (defined $irt) { my $html = ascii_html($irt); my $href = mid_href($irt); - $rv .= "In-Reply-To: <"; - $rv .= "$html>\n"; + ${$ctx->{obuf}} .= <+/>\t(help)$html> +EOM } } # do not display References: if search is present, # we show the thread skeleton at the bottom, instead. - return $rv if $over; + return if $ctx->{ibx}->over; $refs //= references($hdr); if (@$refs) { - @$refs = map { linkify_ref_no_over($_) } @$refs; - $rv .= 'References: '. join("\n\t", @$refs) . "\n"; + $_ = linkify_ref_no_over($_) for @$refs; + ${$ctx->{obuf}} .= 'References: '. join("\n\t", @$refs) . "\n"; } - $rv; } # returns a string buffer @@ -850,7 +848,7 @@ action=$upfx href=#t>this message: \t(help)