Skip to content

Commit 06eeb1d

Browse files
committed
difflib: move and publish splitLines in difflib
1 parent 6f90939 commit 06eeb1d

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

difflib/difflib.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"bytes"
1818
"fmt"
1919
"io"
20+
"strings"
2021
)
2122

2223
func min(a, b int) int {
@@ -743,3 +744,13 @@ func GetContextDiffString(diff ContextDiff) (string, error) {
743744
err := WriteContextDiff(w, diff)
744745
return string(w.Bytes()), err
745746
}
747+
748+
// Split a string on "\n" while preserving them. The output can be used
749+
// as input for UnifiedDiff and ContextDiff structures.
750+
func SplitLines(s string) []string {
751+
lines := []string{}
752+
for _, line := range strings.Split(s, "\n") {
753+
lines = append(lines, line+"\n")
754+
}
755+
return lines
756+
}

difflib/difflib_test.go

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,6 @@ group
102102
}
103103
}
104104

105-
func splitLines(s string) []string {
106-
lines := []string{}
107-
for _, line := range strings.Split(s, "\n") {
108-
lines = append(lines, line+"\n")
109-
}
110-
return lines
111-
}
112-
113105
func TestUnifiedDiff(t *testing.T) {
114106
a := `one
115107
two
@@ -120,8 +112,8 @@ one
120112
three
121113
four`
122114
diff := UnifiedDiff{
123-
A: splitLines(a),
124-
B: splitLines(b),
115+
A: SplitLines(a),
116+
B: SplitLines(b),
125117
FromFile: "Original",
126118
FromDate: "2005-01-26 23:30:50",
127119
ToFile: "Current",
@@ -158,8 +150,8 @@ one
158150
tree
159151
four`
160152
diff := ContextDiff{
161-
A: splitLines(a),
162-
B: splitLines(b),
153+
A: SplitLines(a),
154+
B: SplitLines(b),
163155
FromFile: "Original",
164156
ToFile: "Current",
165157
Context: 3,
@@ -309,13 +301,13 @@ func TestOutputFormatTabDelimiter(t *testing.T) {
309301
}
310302
ud, err := GetUnifiedDiffString(diff)
311303
assertEqual(t, err, nil)
312-
assertEqual(t, splitLines(ud)[:2], []string{
304+
assertEqual(t, SplitLines(ud)[:2], []string{
313305
"--- Original\t2005-01-26 23:30:50\n",
314306
"+++ Current\t2010-04-12 10:20:52\n",
315307
})
316308
cd, err := GetContextDiffString(ContextDiff(diff))
317309
assertEqual(t, err, nil)
318-
assertEqual(t, splitLines(cd)[:2], []string{
310+
assertEqual(t, SplitLines(cd)[:2], []string{
319311
"*** Original\t2005-01-26 23:30:50\n",
320312
"--- Current\t2010-04-12 10:20:52\n",
321313
})
@@ -331,9 +323,9 @@ func TestOutputFormatNoTrailingTabOnEmptyFiledate(t *testing.T) {
331323
}
332324
ud, err := GetUnifiedDiffString(diff)
333325
assertEqual(t, err, nil)
334-
assertEqual(t, splitLines(ud)[:2], []string{"--- Original\n", "+++ Current\n"})
326+
assertEqual(t, SplitLines(ud)[:2], []string{"--- Original\n", "+++ Current\n"})
335327

336328
cd, err := GetContextDiffString(ContextDiff(diff))
337329
assertEqual(t, err, nil)
338-
assertEqual(t, splitLines(cd)[:2], []string{"*** Original\n", "--- Current\n"})
330+
assertEqual(t, SplitLines(cd)[:2], []string{"*** Original\n", "--- Current\n"})
339331
}

0 commit comments

Comments
 (0)