Categorygithub.com/martinohmann/go-difflib
module
1.1.0
Repository: https://github.com/martinohmann/go-difflib.git
Documentation: pkg.go.dev

# README

go-difflib

Build Status GoDoc

This is a fork of go-difflib by Patrick Mezard with added support for colored diffs and go modules. It can be used as a drop-in replacement for the original implementation which is not maintained anymore.

Go-difflib is a partial port of python 3 difflib package. Its main goal was to make unified and context diff available in pure Go, mostly for testing purposes.

The following class and functions (and related tests) have be ported:

  • SequenceMatcher
  • unified_diff()
  • context_diff()

Installation

$ go get github.com/martinohmann/go-difflib/difflib

Quick Start

Diffs are configured with Unified (or ContextDiff) structures, and can be output to an io.Writer or returned as a string.

diff := difflib.UnifiedDiff{
    A:        difflib.SplitLines("foo\nbar\n"),
    B:        difflib.SplitLines("foo\nbaz\n"),
    FromFile: "Original",
    ToFile:   "Current",
    Context:  3,
}
text, _ := difflib.GetUnifiedDiffString(diff)
fmt.Printf(text)

would output:

--- Original
+++ Current
@@ -1,3 +1,3 @@
 foo
-bar
+baz

Color support

Colored diffs can be enabled by setting the Color struct field of the UnifiedDiff (or ContextDiff) structs to true.

diff := difflib.UnifiedDiff{
    A:        difflib.SplitLines("foo\nbar\n"),
    B:        difflib.SplitLines("foo\nbaz\n"),
    FromFile: "Original",
    ToFile:   "Current",
    Context:  3,
    Color:    true,
}

// writes a colored diff
text, _ := difflib.GetUnifiedDiffString(diff)
fmt.Printf(text)

# Packages

Package difflib is a partial port of Python difflib module.