unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Cc: Eric Wong <e@80x24.org>
Subject: [PATCH] line-wrap generated HTML source around attrs for readability
Date: Sat, 13 Sep 2014 22:03:45 +0000	[thread overview]
Message-ID: <1410645825-28840-1-git-send-email-e@80x24.org> (raw)

It's important to keep HTML source readable to folks who prefer
to read raw HTML.  This should improve readability of the HTML
source by keeping line length in check without wasting bytes.
---
 lib/PublicInbox/Feed.pm |  6 +++---
 lib/PublicInbox/View.pm | 14 +++++++-------
 lib/PublicInbox/WWW.pm  |  8 ++++----
 t/plack.t               |  2 +-
 t/view.t                |  8 ++++----
 5 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm
index 350cc65..339d9c2 100644
--- a/lib/PublicInbox/Feed.pm
+++ b/lib/PublicInbox/Feed.pm
@@ -12,7 +12,7 @@ use PublicInbox::View;
 use constant {
 	DATEFMT => '%Y-%m-%dT%H:%M:%SZ', # atom standard
 	MAX_PER_PAGE => 25, # this needs to be tunable
-	PRE_WRAP => '<pre style="white-space:pre-wrap">',
+	PRE_WRAP => "<pre\nstyle=\"white-space:pre-wrap\">",
 };
 
 # main function
@@ -73,8 +73,8 @@ sub generate_html_index {
 	my $th = PublicInbox::Thread->new(@messages);
 	$th->thread;
 	my $html = "<html><head><title>$title</title>" .
-		'<link rel="alternate" title="Atom feed" href="' .
-		$feed_opts->{atomurl} . '" type="application/atom+xml"/>' .
+		'<link rel="alternate" title="Atom feed"' . "\nhref=\"" .
+		$feed_opts->{atomurl} . "\"\ntype=\"application/atom+xml\"/>" .
 		'</head><body>' . PRE_WRAP;
 
 	# sort child messages in chronological order
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 262e72e..14133d5 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -13,7 +13,7 @@ require POSIX;
 # TODO: make these constants tunable
 use constant MAX_INLINE_QUOTED => 12; # half an 80x24 terminal
 use constant MAX_TRUNC_LEN => 72;
-use constant PRE_WRAP => '<pre style="white-space:pre-wrap">';
+use constant PRE_WRAP => "<pre\nstyle=\"white-space:pre-wrap\">";
 
 *ascii_html = *PublicInbox::Hval::ascii_html;
 
@@ -74,7 +74,7 @@ sub index_entry {
 	}
 	$ts = POSIX::strftime($fmt, gmtime($ts));
 
-	$rv .= "$pfx<a name=\"$name\"><b>$subj</b> $from - $ts</a>\n\n";
+	$rv .= "$pfx<a\nname=\"$name\"><b>$subj</b> $from - $ts</a>\n\n";
 
 	my $irp = $header_obj->header_raw('In-Reply-To');
 	my ($anchor_idx, $anchor);
@@ -217,7 +217,7 @@ sub add_text_body_short {
 				}
 			} while (@sum && length($cur) < MAX_TRUNC_LEN);
 			$cur =~ s/ \z/ .../;
-			"&gt; &lt;<a href=\"${full_pfx}#q${part_nr}_" . $n++ .
+			"&gt; &lt;<a\nhref=\"${full_pfx}#q${part_nr}_" . $n++ .
 				"\">$cur<\/a>&gt;\n";
 		} else {
 			$cur;
@@ -234,7 +234,7 @@ sub add_text_body_full {
 		my $cur = $1;
 		my @lines = split(/\n/, $cur);
 		if (@lines > MAX_INLINE_QUOTED) {
-			"<a name=q${part_nr}_" . $n++ . ">$cur</a>";
+			"<a\nname=q${part_nr}_" . $n++ . ">$cur</a>";
 		} else {
 			$cur;
 		}
@@ -272,7 +272,7 @@ sub headers_to_html_header {
 		$rv .= 'Message-ID: &lt;' . $mid->as_html . '&gt; ';
 		my $href = $mid->as_href;
 		$href = "../m/$href" unless $full_pfx;
-		$rv .= "(<a href=\"$href.txt\">original</a>)\n";
+		$rv .= "(<a\nhref=\"$href.txt\">original</a>)\n";
 	}
 
 	my $irp = $header_obj->header_raw('In-Reply-To');
@@ -281,7 +281,7 @@ sub headers_to_html_header {
 		my $html = $v->as_html;
 		my $href = $v->as_href;
 		$rv .= "In-Reply-To: &lt;";
-		$rv .= "<a href=\"$href.html\">$html</a>&gt;\n";
+		$rv .= "<a\nhref=\"$href.html\">$html</a>&gt;\n";
 	}
 
 	my $refs = $header_obj->header_raw('References');
@@ -336,7 +336,7 @@ sub linkify_refs {
 		my $v = PublicInbox::Hval->new_msgid($_);
 		my $html = $v->as_html;
 		my $href = $v->as_href;
-		"&lt;<a href=\"$href.html\">$html</a>&gt;";
+		"&lt;<a\nhref=\"$href.html\">$html</a>&gt;";
 	} @_);
 }
 
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 2d8f2af..f67e72c 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -252,10 +252,10 @@ sub footer {
 	if ($nurls == 0) {
 		$urls = '($GIT_DIR/cloneurl missing)';
 	} elsif ($nurls == 1) {
-		$urls = 'git URL for <a href="' . SSOMA_URL .
+		$urls = "git URL for <a\nhref=\"" . SSOMA_URL .
 			'">ssoma</a>: ' . $urls[0];
 	} else {
-		$urls = 'git URLs for <a href="' . SSOMA_URL .
+		$urls = "git URLs for <a\nhref=\"" . SSOMA_URL .
 			"\">ssoma</a>:\n" . join("\n", map { "\t$_" } @urls);
 	}
 
@@ -264,11 +264,11 @@ sub footer {
 		$addr = $addr->[0]; # first address is primary
 	}
 
-	$addr = "<a href=\"mailto:$addr\">$addr</a>";
+	$addr = "<a\nhref=\"mailto:$addr\">$addr</a>";
 	$desc =  $desc;
 	join("\n",
 		'- ' . $desc,
-		'A <a href="' . PI_URL .  '">public-inbox</a>, ' .
+		"A <a\nhref=\"" . PI_URL .  '">public-inbox</a>, ' .
 			'anybody may post in plain-text (not HTML):',
 		$addr,
 		$urls
diff --git a/t/plack.t b/t/plack.t
index 3bc4433..85dd337 100644
--- a/t/plack.t
+++ b/t/plack.t
@@ -98,7 +98,7 @@ EOF
 		my $res = $cb->(GET($pfx . '/atom.xml'));
 		is(200, $res->code, 'success response received for atom');
 		like($res->content,
-			qr!link href="\Q$pfx\E/m/blah%40example\.com\.html"!,
+			qr!link\s+href="\Q$pfx\E/m/blah%40example\.com\.html"!s,
 			'atom feed generated correct URL');
 	});
 }
diff --git a/t/view.t b/t/view.t
index 91ba168..1851793 100644
--- a/t/view.t
+++ b/t/view.t
@@ -44,19 +44,19 @@ EOF
 	my $html = PublicInbox::View->msg_html($s);
 
 	# ghetto tests
-	like($html, qr!<a href="\.\./m/hello%40!s, "MID link present");
+	like($html, qr!<a\nhref="\.\./m/hello%40!s, "MID link present");
 	like($html, qr/hello world\b/, "body present");
 	like($html, qr/&gt; keep this inline/, "short quoted text is inline");
-	like($html, qr/<a name=[^>]+>&gt; Long and wordy/,
+	like($html, qr/<a\nname=[^>]+>&gt; Long and wordy/,
 		"long quoted text is anchored");
 
 	# short page
 	my $pfx = "http://example.com/test/f";
 	my $short = PublicInbox::View->msg_html($s, $pfx);
-	like($short, qr!<a href="hello%40!s, "MID link present");
+	like($short, qr!<a\nhref="hello%40!s, "MID link present");
 	like($short, qr/\n&gt; keep this inline/,
 		"short quoted text is inline");
-	like($short, qr/<a href="\Q$pfx\E#[^>]+>Long and wordy/,
+	like($short, qr/<a\nhref="\Q$pfx\E#[^>]+>Long and wordy/,
 		"long quoted text is made into a link");
 	ok(length($short) < length($html), "short page is shorter");
 }
-- 
EW


                 reply	other threads:[~2014-09-13 22:03 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=1410645825-28840-1-git-send-email-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).