* [PATCH] line-wrap generated HTML source around attrs for readability
@ 2014-09-13 22:03 Eric Wong
0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2014-09-13 22:03 UTC (permalink / raw)
To: meta; +Cc: Eric Wong
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/ .../;
- "> <<a href=\"${full_pfx}#q${part_nr}_" . $n++ .
+ "> <<a\nhref=\"${full_pfx}#q${part_nr}_" . $n++ .
"\">$cur<\/a>>\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: <' . $mid->as_html . '> ';
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: <";
- $rv .= "<a href=\"$href.html\">$html</a>>\n";
+ $rv .= "<a\nhref=\"$href.html\">$html</a>>\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;
- "<<a href=\"$href.html\">$html</a>>";
+ "<<a\nhref=\"$href.html\">$html</a>>";
} @_);
}
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/> keep this inline/, "short quoted text is inline");
- like($html, qr/<a name=[^>]+>> Long and wordy/,
+ like($html, qr/<a\nname=[^>]+>> 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> 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
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2014-09-13 22:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-13 22:03 [PATCH] line-wrap generated HTML source around attrs for readability Eric Wong
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).