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
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
# 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;
}
$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);
}
} 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;
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;
}
$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');
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');
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>>";
} @_);
}
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);
}
$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
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');
});
}
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");
}