Package diffz provides functions for comparing and displaying differences between two strings. It's based on kylelemons/godebug and sergi/go-diff. It provides additional features of ignoring spaces and supporting placeholders.
go get -u ezpkg.io/diffz@v0.1.2
// diff by char
left, right := "onetwo thr33four five", "onetwothree fourfive"
diffs := diffz.IgnoreSpace().DiffByChar(left, right)
fmt.Println(diffz.Format(diffs))
// diff by line
left, right := "one\ntwo\nthree\nfour", "one\ntwo\nfour"
diffs := diffz.IgnoreSpace().DiffByLine(left, right)
fmt.Println(diffz.Format(diffs))
// placeholder is useful for comparing tests with uuid or random values
diffs := diffz.Placeholder().AndIgnoreSpace().DiffByLine(left, right)
left := "id: ████\ncode: AF███\nname: Alice\n"
right := "id: 1234\ncode: AF123\nname: Baby\n"
fmt.Println(diffz.Format(diffs))
This package is based on these packages:
As I work on various Go projects, I often find myself creating utility functions, extending existing packages, or developing packages to solve specific problems. Moving from one project to another, I usually have to copy or rewrite these solutions. So I created this repository to have all these utilities and packages in one place. Hopefully, you'll find them useful as well.
For more information, see the main repository.