mirror of
https://github.com/documize/community.git
synced 2025-07-20 13:49:42 +02:00
34 lines
831 B
Markdown
34 lines
831 B
Markdown
diff
|
|
====
|
|
|
|
A difference algorithm package for go.
|
|
|
|
The algorithm is described by Eugene Myers in
|
|
["An O(ND) Difference Algorithm and its Variations"](http://www.xmailserver.org/diff2.pdf).
|
|
|
|
Example
|
|
-------
|
|
You can use diff.Ints, diff.Runes, diff.ByteStrings, and diff.Bytes
|
|
|
|
diff.Runes([]rune("sögen"), []rune("mögen")) // returns []Changes{{0,0,1,1}}
|
|
|
|
or you can implement diff.Data
|
|
|
|
type MixedInput struct {
|
|
A []int
|
|
B []string
|
|
}
|
|
func (m *MixedInput) Equal(i, j int) bool {
|
|
return m.A[i] == len(m.B[j])
|
|
}
|
|
|
|
and call
|
|
|
|
m := &MixedInput{..}
|
|
diff.Diff(len(m.A), len(m.B), m)
|
|
|
|
Also has granularity functions to merge changes that are close by.
|
|
|
|
diff.Granular(1, diff.ByteStrings("emtire", "umpire")) // returns []Changes{{0,0,3,3}}
|
|
|
|
Documentation at http://godoc.org/github.com/mb0/diff
|