unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 5/7] linkify: support adding "(raw)" link for Message-IDs
Date: Thu, 24 Oct 2019 00:12:39 +0000	[thread overview]
Message-ID: <20191024001241.14224-6-e@80x24.org> (raw)
In-Reply-To: <20191024001241.14224-1-e@80x24.org>

And use it for the per-message permalink display.
---
 lib/PublicInbox/Linkify.pm | 10 ++++++----
 lib/PublicInbox/View.pm    | 13 +++++--------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/lib/PublicInbox/Linkify.pm b/lib/PublicInbox/Linkify.pm
index 5b83742c..af9be3ff 100644
--- a/lib/PublicInbox/Linkify.pm
+++ b/lib/PublicInbox/Linkify.pm
@@ -92,7 +92,7 @@ sub linkify_2 {
 # single pass linkification of <Message-ID@example.com> within $str
 # with $pfx being the URL prefix
 sub linkify_mids {
-	my ($self, $pfx, $str) = @_;
+	my ($self, $pfx, $str, $raw) = @_;
 	$$str =~ s!<([^>]+)>!
 		my $msgid = PublicInbox::Hval->new_msgid($1);
 		my $html = $msgid->as_html;
@@ -102,15 +102,17 @@ sub linkify_mids {
 		# salt this, as this could be exploited to show
 		# links in the HTML which don't show up in the raw mail.
 		my $key = sha1_hex($html . $SALT);
-		$self->{$key} = [ $href, $html ];
-		'<PI-LINK-'. $key . '>';
+		my $repl = qq(&lt;<a\nhref="$pfx/$href/">$html</a>&gt;);
+		$repl .= qq{ (<a\nhref="$pfx/$href/raw">raw</a>)} if $raw;
+		$self->{$key} = $repl;
+		'PI-LINK-'. $key;
 		!ge;
 	$$str = ascii_html($$str);
 	$$str =~ s!\bPI-LINK-([a-f0-9]{40})\b!
 		my $key = $1;
 		my $repl = $_[0]->{$key};
 		if (defined $repl) {
-			"<a\nhref=\"$pfx/$repl->[0]/\">$repl->[1]</a>";
+			$repl;
 		} else {
 			# false positive or somebody tried to mess with us
 			$key;
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index ff55596d..00bf38a9 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -691,14 +691,11 @@ sub _msg_html_prepare {
 		$rv .= "Message-ID: &lt;$mhtml&gt; ";
 		$rv .= "(<a\nhref=\"raw\">raw</a>)\n";
 	} else {
-		foreach (@$mids) {
-			my $mid = PublicInbox::Hval->new_msgid($_);
-			my $mhtml = $mid->as_html;
-			my $href = $mid->{href};
-			$rv .= "Message-ID: ";
-			$rv .= "&lt;<a\nhref=\"../$href/\">$mhtml</a>&gt; ";
-			$rv .= "(<a\nhref=\"../$href/raw\">raw</a>)\n";
-		}
+		my $lnk = PublicInbox::Linkify->new;
+		my $s = '';
+		$s .= "Message-ID: $_\n" for ($hdr->header_raw('Message-ID'));
+		$lnk->linkify_mids('..', \$s, 1);
+		$rv .= $s;
 	}
 	$rv .= _parent_headers($hdr, $over);
 	$rv .= "\n";

  parent reply	other threads:[~2019-10-24  0:12 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-24  0:12 [PATCH 0/7] redundant header madness Eric Wong
2019-10-24  0:12 ` [PATCH 1/7] search: support multiple From/To/Cc/Subject headers Eric Wong
2019-10-24  0:12 ` [PATCH 2/7] view: display redundant headers in permalink Eric Wong
2019-10-24  0:12 ` [PATCH 3/7] view: move '<' and '>' outside <a> Eric Wong
2019-10-24  0:12 ` [PATCH 4/7] view: improve warning for multiple Message-IDs Eric Wong
2019-10-24  0:12 ` Eric Wong [this message]
2019-10-24  0:12 ` [RFC 6/7] index: allow search/lookups on X-Alt-Message-ID Eric Wong
2019-10-24  0:12 ` [RFC 7/7] view: show X-Alt-Message-ID in permalink view, too Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://public-inbox.org/README

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191024001241.14224-6-e@80x24.org \
    --to=e@80x24.org \
    --cc=meta@public-inbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).