diff --git a/difflib/difflib.go b/difflib/difflib.go index ec0b826..e5221e4 100644 --- a/difflib/difflib.go +++ b/difflib/difflib.go @@ -17,6 +17,7 @@ import ( "bytes" "fmt" "io" + "strings" ) func min(a, b int) int { @@ -743,3 +744,13 @@ func GetContextDiffString(diff ContextDiff) (string, error) { err := WriteContextDiff(w, diff) return string(w.Bytes()), err } + +// Split a string on "\n" while preserving them. The output can be used +// as input for UnifiedDiff and ContextDiff structures. +func SplitLines(s string) []string { + lines := []string{} + for _, line := range strings.Split(s, "\n") { + lines = append(lines, line+"\n") + } + return lines +} diff --git a/difflib/difflib_test.go b/difflib/difflib_test.go index d36c257..b7ea0a8 100644 --- a/difflib/difflib_test.go +++ b/difflib/difflib_test.go @@ -102,14 +102,6 @@ group } } -func splitLines(s string) []string { - lines := []string{} - for _, line := range strings.Split(s, "\n") { - lines = append(lines, line+"\n") - } - return lines -} - func TestUnifiedDiff(t *testing.T) { a := `one two @@ -120,8 +112,8 @@ one three four` diff := UnifiedDiff{ - A: splitLines(a), - B: splitLines(b), + A: SplitLines(a), + B: SplitLines(b), FromFile: "Original", FromDate: "2005-01-26 23:30:50", ToFile: "Current", @@ -158,8 +150,8 @@ one tree four` diff := ContextDiff{ - A: splitLines(a), - B: splitLines(b), + A: SplitLines(a), + B: SplitLines(b), FromFile: "Original", ToFile: "Current", Context: 3, @@ -309,13 +301,13 @@ func TestOutputFormatTabDelimiter(t *testing.T) { } ud, err := GetUnifiedDiffString(diff) assertEqual(t, err, nil) - assertEqual(t, splitLines(ud)[:2], []string{ + assertEqual(t, SplitLines(ud)[:2], []string{ "--- Original\t2005-01-26 23:30:50\n", "+++ Current\t2010-04-12 10:20:52\n", }) cd, err := GetContextDiffString(ContextDiff(diff)) assertEqual(t, err, nil) - assertEqual(t, splitLines(cd)[:2], []string{ + assertEqual(t, SplitLines(cd)[:2], []string{ "*** Original\t2005-01-26 23:30:50\n", "--- Current\t2010-04-12 10:20:52\n", }) @@ -331,9 +323,9 @@ func TestOutputFormatNoTrailingTabOnEmptyFiledate(t *testing.T) { } ud, err := GetUnifiedDiffString(diff) assertEqual(t, err, nil) - assertEqual(t, splitLines(ud)[:2], []string{"--- Original\n", "+++ Current\n"}) + assertEqual(t, SplitLines(ud)[:2], []string{"--- Original\n", "+++ Current\n"}) cd, err := GetContextDiffString(ContextDiff(diff)) assertEqual(t, err, nil) - assertEqual(t, splitLines(cd)[:2], []string{"*** Original\n", "--- Current\n"}) + assertEqual(t, SplitLines(cd)[:2], []string{"*** Original\n", "--- Current\n"}) }