// Copyright (c) 2012-2016 The go-diff authors. All rights reserved. // https://github.com/sergi/go-diff // See the included LICENSE file for license details. // // go-diff is a Go implementation of Google's Diff, Match, and Patch library // Original library is Copyright (c) 2006 Google Inc. // http://code.google.com/p/google-diff-match-patch/ // Package diffmatchpatch offers robust algorithms to perform the operations required for synchronizing plain text. package diffmatchpatch import ( "time" ) // DiffMatchPatch holds the configuration for diff-match-patch operations. type DiffMatchPatch struct { // Number of seconds to map a diff before giving up (0 for infinity). DiffTimeout time.Duration // Cost of an empty edit operation in terms of edit characters. DiffEditCost int // How far to search for a match (0 = exact location, 1000+ = broad match). A match this many characters away from the expected location will add 1.0 to the score (0.0 is a perfect match). MatchDistance int // When deleting a large block of text (over ~64 characters), how close do the contents have to be to match the expected contents. (0.0 = perfection, 1.0 = very loose). Note that MatchThreshold controls how closely the end points of a delete need to match. PatchDeleteThreshold float64 // Chunk size for context length. PatchMargin int // The number of bits in an int. MatchMaxBits int // At what point is no match declared (0.0 = perfection, 1.0 = very loose). MatchThreshold float64 } // New creates a new DiffMatchPatch object with default parameters. func New() *DiffMatchPatch { // Defaults. return &DiffMatchPatch{ DiffTimeout: time.Second, DiffEditCost: 4, MatchThreshold: 0.5, MatchDistance: 1000, PatchDeleteThreshold: 0.5, PatchMargin: 4, MatchMaxBits: 32, } }