From 4dd4e8458d834889eb45bfe2f5ee67be297e7319 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 4 Sep 2015 05:33:17 +0000 Subject: view: reduce redundant attributions in permalink refs No point in repeating authorship when PATCH messages are threaded and it's obvious from the top message who the author is of the series: [this message] - John Smith @ 2015-09-04 00:04:20 UTC ` [PATCH 1/4] view: eliminate redundant [threaded|flat] link ` [PATCH 2/4] view: one line for thread subjects ` [PATCH 3/4] view: adjust spacing and indentation of index threads ` [PATCH 4/4] view: add missing newline to inline dump --- lib/PublicInbox/View.pm | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 6b717035..d025c993 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -465,6 +465,8 @@ sub thread_inline { cur => $mid, parent_cmp => defined $parent ? $parent : '', parent => $parent, + prev_attr => '', + prev_level => 0, }; for (thread_results(load_results($res))->rootset) { inline_dump($dst, $state, $upfx, $_, 0); @@ -691,15 +693,24 @@ sub _inline_header { my $mid = mid_clean($mime->header('Message-ID')); my $f = $mime->header('X-PI-From'); my $d = _msg_date($mime); - $f = PublicInbox::Hval->new($f); - $d = PublicInbox::Hval->new($d); - $f = $f->as_html; - $d = $d->as_html . ' UTC'; + $f = PublicInbox::Hval->new($f)->as_html; + $d = PublicInbox::Hval->new($d)->as_html; + my $attr = "$f @ $d"; + $state->{first_level} ||= $level; + if ($attr ne $state->{prev_attr} || $state->{prev_level} > $level) { + $state->{prev_attr} = $attr; + $attr = ' - ' . $attr; + $attr .= ' UTC' if $level >= $state->{first_level}; + } else { + $attr = ''; + } + $state->{prev_level} = $level; + if ($cur) { if ($cur eq $mid) { delete $state->{cur}; $$dst .= "$pfx` ". - "[this message] by $f @ $d\n"; + "[this message]$attr\n"; return; } @@ -722,7 +733,7 @@ sub _inline_header { my $m = PublicInbox::Hval->new_msgid($mid); $m = $upfx . '../' . $m->as_href . '/'; if (defined $s) { - $$dst .= "$pfx` $s by $f @ $d\n"; + $$dst .= "$pfx` $s$attr\n"; } else { $$dst .= "$pfx` $f @ $d\n"; } -- cgit v1.2.3-24-ge0c7