]> Sergey Matveev's repositories - public-inbox.git/commitdiff
line-wrap generated HTML source around attrs for readability
authorEric Wong <e@80x24.org>
Sat, 13 Sep 2014 21:50:31 +0000 (21:50 +0000)
committerEric Wong <e@80x24.org>
Sat, 13 Sep 2014 22:00:32 +0000 (22:00 +0000)
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
lib/PublicInbox/View.pm
lib/PublicInbox/WWW.pm
t/plack.t
t/view.t

index 350cc65e866575618ce5537fc240a6c2fa7d6f04..339d9c2031834e8bacf72b1c28f76c347726933a 100644 (file)
@@ -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
index 262e72e9a1ed69c7f7774a92ca371fdcc59cccd1..14133d554ee81063e9badd07ecad2708179585a4 100644 (file)
@@ -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;";
        } @_);
 }
 
index 2d8f2afc0a61350f5c67e10a7204e2af65aee2f5..f67e72cefbfb9629189fa50ccb572e8fc690179a 100644 (file)
@@ -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
index 3bc4433f9ae3ce73cedf1d124790a8e238c8ed27..85dd337dd11d6fe55a0aa39a94c58c38996ecf5c 100644 (file)
--- 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');
        });
 }
index 91ba16869820537fa1731bc9121aea84f12cb41b..1851793377fbd557f90fb7dc2105ac916798b346 100644 (file)
--- 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");
 }