use constant STYLE => '<style>pre{white-space:pre-wrap}</style>';
use constant PRE => "<pre\nstyle=\"white-space:pre-wrap\">"; # legacy
+my $enc_utf8 = find_encoding('UTF-8');
my $enc_ascii = find_encoding('us-ascii');
+sub new_bin {
+ my ($class, $raw, $href) = @_;
+
+ $raw = $enc_utf8->decode($raw);
+ bless {
+ raw => $raw,
+ href => defined $href ? $href : $raw,
+ }, $class;
+}
+
sub new {
my ($class, $raw, $href) = @_;
my @l = ($1, $2);
@href = git_blob_hrefs($rel, @l);
@l = git_blob_links(\@href, \@l);
- $l = "index $l[0]..$l[1]$end";
+ $l = "index $l[0]..$l[1]$end\n";
} elsif ($l =~ /^@@ (\S+) (\S+) @@(.*)$/) { # regular
my $ctx = $3;
my @l = ($1, $2);
@l = git_blob_links(\@href, \@l);
- $l = "@@ $l[0] $l[1] @@".$ctx;
+ $l = "@@ $l[0] $l[1] \@\@$ctx\n";
} elsif ($l =~ /^index ($cmt,[^\.]+)\.\.($cmt)(.*)$/o) { # --cc
my @l = (split(',', $1), $2);
my $end = $3;
@href = git_blob_hrefs($rel, @l);
@l = git_blob_links(\@href, \@l);
my $res = pop @l;
- $l = 'index '.join(',', @l)."..$res$end";
+ $l = 'index '.join(',', @l)."..$res$end\n";
} elsif ($l =~ /^(@@@+) (\S+.*\S+) @@@+(.*)$/) { # --cc
my ($at, $ctx) = ($1, $3);
my @l = split(' ', $2);
@l = git_blob_links(\@href, \@l);
- $l = join(' ', $at, @l, $at) . $ctx;
+ $l = join(' ', $at, @l, $at) . $ctx . "\n";
} else {
- $l = PublicInbox::Hval->new($l)->as_html;
+ $l = PublicInbox::Hval->new_bin($l)->as_html;
}
- $fh->write($l . "\n");
+ $fh->write($l);
}
$fh->write('</pre></body></html>');
}
use base qw(PublicInbox::RepoBrowseBase);
use PublicInbox::Git;
use URI::Escape qw(uri_escape_utf8);
-use Encode qw/find_encoding/;
-my $enc_utf8 = find_encoding('UTF-8');
my %GIT_MODE = (
'100644' => ' ', # blob
$buf = pop @buf; # last line, careful...
$n += scalar @buf;
foreach my $l (@buf) {
- $l = $enc_utf8->decode($l);
- $l = PublicInbox::Hval::ascii_html($l);
+ $l = PublicInbox::Hval->new_bin($l)->as_html;
$l .= "\n";
$fh->write($l);
}