workgroups/vendor/github.com/shazow/go-diff/difflib/differ.go
Marvin Preuss 1d4ae27878
All checks were successful
continuous-integration/drone/push Build is passing
ci: drone yaml with reusable anchors
2021-09-24 17:34:17 +02:00

40 lines
944 B
Go

// This package implements the diff.Differ interface using github.com/mb0/diff as a backend.
package difflib
import (
"io"
"io/ioutil"
"github.com/pmezard/go-difflib/difflib"
)
type differ struct{}
// New returns an implementation of diff.Differ using mb0diff as the backend.
func New() *differ {
return &differ{}
}
// Diff consumes the entire reader streams into memory before generating a diff
// which then gets filled into the buffer. This implementation stores and
// manipulates all three values in memory.
func (diff *differ) Diff(out io.Writer, a io.ReadSeeker, b io.ReadSeeker) error {
var src, dst []byte
var err error
if src, err = ioutil.ReadAll(a); err != nil {
return err
}
if dst, err = ioutil.ReadAll(b); err != nil {
return err
}
d := difflib.UnifiedDiff{
A: difflib.SplitLines(string(src)),
B: difflib.SplitLines(string(dst)),
Context: 3,
}
return difflib.WriteUnifiedDiff(out, d)
}