X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FViewDiff.pm;h=57a1b5d66dd9dda27de87c3106da22fb3f385355;hb=a7c58d0ce022671c9170401054a1131b9ec15bfa;hp=604b1f23e5dbe9d509416b28914444005adece2b;hpb=7efca6c8a2b98d97056fc933165df82e4b825725;p=public-inbox.git diff --git a/lib/PublicInbox/ViewDiff.pm b/lib/PublicInbox/ViewDiff.pm index 604b1f23..57a1b5d6 100644 --- a/lib/PublicInbox/ViewDiff.pm +++ b/lib/PublicInbox/ViewDiff.pm @@ -20,6 +20,9 @@ sub UNSAFE () { "^A-Za-z0-9\-\._~/" } my $OID_NULL = '0{7,40}'; my $OID_BLOB = '[a-f0-9]{7,40}'; +my $LF = qr!\n!; +my $ANY = qr![^\n]!; +my $FN = qr!(?:"?[^/\n]+/[^\n]+|/dev/null)!; # cf. git diff.c :: get_compact_summary my $DIFFSTAT_COMMENT = qr/\((?:new|gone|(?:(?:new|mode) [\+\-][lx]))\)/; @@ -150,8 +153,8 @@ sub diff_header ($$$$) { sub diff_before_or_after ($$$) { my ($dst, $ctx, $x) = @_; my $linkify = $ctx->{-linkify}; - for my $y (split(/(^---\r?\n)/sm, $$x)) { - if ($y =~ /\A---\r?\n\z/s) { + for my $y (split(/(^---\n)/sm, $$x)) { + if ($y =~ /\A---\n\z/s) { $$dst .= "---\n"; # all HTML is "\r\n" => "\n" } elsif ($y =~ /^ [0-9]+ files? changed, /sm) { # ok, looks like a diffstat, go line-by-line: @@ -167,11 +170,9 @@ sub diff_before_or_after ($$$) { } } +# callers must do CRLF => LF conversion before calling this sub flush_diff ($$$) { my ($dst, $ctx, $cur) = @_; - state $LF = qr!\r?\n!; - state $ANY = qr![^\r\n]!; - state $FN = qr!(?:"?[^/\n]+/[^\r\n]+|/dev/null)!; my @top = split(/( (?: # begin header stuff, don't capture filenames, here,