From b926665849f6d317b97cf679becf1e315df701b0 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 17 Apr 2014 21:49:52 +0000 Subject: [PATCH] view: inline shorter quotes Breaking up short quote messages at 1 line is too disconcerting, try 5 lines as proper quotes shouldn't be too long. --- lib/PublicInbox/View.pm | 13 +++++++------ t/feed.t | 7 ++++++- t/view.t | 4 ++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 84c7393b..17aca94e 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -8,6 +8,7 @@ use CGI qw/escapeHTML/; use Encode qw/find_encoding/; use Encode::MIME::Header; use Email::MIME::ContentType qw/parse_content_type/; +use constant MAX_INLINE_QUOTED => 5; my $enc_utf8 = find_encoding('utf8'); my $enc_ascii = find_encoding('us-ascii'); @@ -88,10 +89,10 @@ sub add_text_body_short { my ($enc, $part, $part_nr, $full_pfx) = @_; my $n = 0; my $s = ascii_html($enc->decode($part->body)); - $s =~ s!^((?:(?:>[^\n]+)\n)+)! + $s =~ s!^((?:(?:>[^\n]*)\n)+)! my $cur = $1; my @lines = split(/\n/, $cur); - if (@lines > 1) { + if (@lines > MAX_INLINE_QUOTED) { # show a short snippet of quoted text $cur = join(' ', @lines); $cur =~ s/> ?//g; @@ -100,10 +101,10 @@ sub add_text_body_short { $cur = ''; do { $cur .= shift(@sum) . ' '; - } while (@sum && length($cur) < 68); + } while (@sum && length($cur) < 64); $cur=~ s/ \z/ .../; "> <$cur<\/a>>"; + "\">$cur<\/a>>\n"; } else { $cur; } @@ -115,10 +116,10 @@ sub add_text_body_full { my ($enc, $part, $part_nr) = @_; my $n = 0; my $s = ascii_html($enc->decode($part->body)); - $s =~ s!^((?:(?:>[^\n]+)\n)+)! + $s =~ s!^((?:(?:>[^\n]*)\n)+)! my $cur = $1; my @lines = split(/\n/, $cur); - if (@lines > 1) { + if (@lines > MAX_INLINE_QUOTED) { "$cur"; } else { $cur; diff --git a/t/feed.t b/t/feed.t index 63fcc443..125490d6 100644 --- a/t/feed.t +++ b/t/feed.t @@ -31,10 +31,15 @@ Date: Thu, 01 Jan 1970 00:00:00 +0000 > This is a long multi line quote so it should not be allowed to > show up in its entirty in the Atom feed. drop me +> I quote to much +> I quote to much +> I quote to much +> I quote to much msg $i -> inline me here, short quote +> inline me here +> this is a short quote keep me EOF diff --git a/t/view.t b/t/view.t index ef1b74c9..067f9890 100644 --- a/t/view.t +++ b/t/view.t @@ -16,6 +16,10 @@ OK > Long and wordy reply goes here and it is split across multiple lines. > We generate links to a separate full page where quoted-text is inline. +> This is +> +> Currently 5 lines +> See MAX_INLINE_QUOTED hello world EOF -- 2.44.0