| // 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, |
| } |
| } |