From 43288c0a9de93d0e73af57e9525f2053f29f10bb Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 10 Dec 2016 01:09:48 +0000 Subject: view: reduce indentation for skeleton generation This should reduce the number of subroutine calls needed for the common case of real (non-ghost) messages as well as shortening code. --- lib/PublicInbox/View.pm | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index feac6015..c2e1ae76 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -767,8 +767,9 @@ sub _msg_date { sub fmt_ts { POSIX::strftime('%Y-%m-%d %k:%M', gmtime($_[0])) } -sub _skel_header { - my ($ctx, $smsg, $level) = @_; +sub skel_dump { + my ($ctx, $level, $node) = @_; + my $smsg = $node->{smsg} or return _skel_ghost($ctx, $level, $node); my $dst = $ctx->{dst}; my $cur = $ctx->{cur}; @@ -824,32 +825,29 @@ sub _skel_header { $$dst .= $d . "" . $end; } -sub skel_dump { +sub _skel_ghost { my ($ctx, $level, $node) = @_; - if (my $smsg = $node->{smsg}) { - _skel_header($ctx, $smsg, $level); + + my $mid = $node->{id}; + my $d = $ctx->{pct} ? ' [irrelevant] ' # search result + : ' [not found] '; + $d .= indent_for($level) . th_pfx($level); + my $upfx = $ctx->{-upfx}; + my $m = PublicInbox::Hval->new_msgid($mid); + my $href = $upfx . $m->{href} . '/'; + my $html = $m->as_html; + + my $mapping = $ctx->{mapping}; + my $map = $mapping->{$mid} if $mapping; + if ($map) { + my $id = id_compress($mid, 1); + $map->[0] = $d . qq{<$html>\n}; + $d .= qq{<$html>\n}; } else { - my $mid = $node->{id}; - my $dst = $ctx->{dst}; - my $d = $ctx->{pct} ? ' [irrelevant] ' # search result - : ' [not found] '; - $d .= indent_for($level) . th_pfx($level); - my $upfx = $ctx->{-upfx}; - my $m = PublicInbox::Hval->new_msgid($mid); - my $href = $upfx . $m->{href} . '/'; - my $html = $m->as_html; - - my $mapping = $ctx->{mapping}; - my $map = $mapping->{$mid} if $mapping; - if ($map) { - my $id = id_compress($mid, 1); - $map->[0] = $d . qq{<$html>\n}; - $d .= qq{<$html>\n}; - } else { - $d .= qq{<$html>\n}; - } - $$dst .= $d; + $d .= qq{<$html>\n}; } + my $dst = $ctx->{dst}; + $$dst .= $d; } sub sort_ts { -- cgit v1.2.3-24-ge0c7