From d5200bb1087ad13c6f558055b91195a144f8a40e Mon Sep 17 00:00:00 2001 From: mrsdizzie Date: Fri, 7 Aug 2020 13:58:44 -0400 Subject: [PATCH 1/2] Improved diff syntax highlighting fix Make previous fix from #12238 more robust since I saw a case where a diff changes only a single character in a chroma class instead of the entire thing. Add another more complicated test to match. --- services/gitdiff/gitdiff.go | 47 ++++++++++++++++++-------------- services/gitdiff/gitdiff_test.go | 10 +++++++ 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 85354784d4c27..25c133d026771 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -16,6 +16,7 @@ import ( "net/url" "os" "os/exec" + "regexp" "sort" "strconv" "strings" @@ -180,55 +181,61 @@ var ( removedCodePrefix = []byte(``) codeTagSuffix = []byte(``) ) +var re = regexp.MustCompile(` 0 { + diffs[i].Text = addSpan + diffs[i].Text + addSpan = "" } - if strings.HasSuffix(diffs[i].Text, " 0 { + diffs[i].Text = addSpan + diffs[i].Text + addSpan = "" } // Print existing closing span first before opening added-code span so it doesn't unintentionally close it if strings.HasPrefix(diffs[i].Text, "") { buf.WriteString("") diffs[i].Text = strings.TrimPrefix(diffs[i].Text, "") } - if strings.HasSuffix(diffs[i].Text, " 0 { + diffs[i].Text = addSpan + diffs[i].Text + addSpan = "" } if strings.HasPrefix(diffs[i].Text, "") { buf.WriteString("") diffs[i].Text = strings.TrimPrefix(diffs[i].Text, "") } - if strings.HasSuffix(diffs[i].Text, " || r.GuessLanguage)"}, {Type: dmp.DiffEqual, Text: " {"}, }, DiffLineAdd)) + + assertEqual(t, "tagURL := fmt.Sprintf("## [%s](%s/%s/%s/%s?q=&type=all&state=closed&milestone=%d) - %s", ge.Milestone\", ge.BaseURL, ge.Owner, ge.Repo, from, milestoneID, time.Now().Format("2006-01-02"))", diffToHTML("", []dmp.Diff{ + {Type: dmp.DiffEqual, Text: "tagURL := fmt.Sprintf("## [%s](%s/%s/%s/%s?q=&type=all&state=closed&milestone=%d) - %s", ge.Milestone\""}, + {Type: dmp.DiffInsert, Text: "f\">getGiteaTagURL(client"}, + {Type: dmp.DiffEqual, Text: ", ge.BaseURL, ge.Owner, ge.Repo, "}, + {Type: dmp.DiffDelete, Text: "from, milestoneID, time.Now().Format("2006-01-02")"}, + {Type: dmp.DiffInsert, Text: "ge.Milestone, from, milestoneID"}, + {Type: dmp.DiffEqual, Text: ")"}, + }, DiffLineDel)) } func TestParsePatch(t *testing.T) { From 255039fdbff334fe02f922651206e558d01d011a Mon Sep 17 00:00:00 2001 From: mrsdizzie Date: Fri, 7 Aug 2020 18:20:46 -0400 Subject: [PATCH 2/2] Better name for global variable --- services/gitdiff/gitdiff.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 25c133d026771..fca210bb1008b 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -181,7 +181,7 @@ var ( removedCodePrefix = []byte(``) codeTagSuffix = []byte(``) ) -var re = regexp.MustCompile(`") diffs[i].Text = strings.TrimPrefix(diffs[i].Text, "") } - m := re.FindStringSubmatchIndex(diffs[i].Text) + m := addSpanRegex.FindStringSubmatchIndex(diffs[i].Text) if m != nil { addSpan = diffs[i].Text[m[0]:m[1]] diffs[i].Text = strings.TrimSuffix(diffs[i].Text, addSpan) @@ -232,7 +232,7 @@ func diffToHTML(fileName string, diffs []diffmatchpatch.Diff, lineType DiffLineT buf.WriteString("") diffs[i].Text = strings.TrimPrefix(diffs[i].Text, "") } - m := re.FindStringSubmatchIndex(diffs[i].Text) + m := addSpanRegex.FindStringSubmatchIndex(diffs[i].Text) if m != nil { addSpan = diffs[i].Text[m[0]:m[1]] diffs[i].Text = strings.TrimSuffix(diffs[i].Text, addSpan)