main
1// Copyright (c) 2012-2016 The go-diff authors. All rights reserved.
2// https://github.com/sergi/go-diff
3// See the included LICENSE file for license details.
4//
5// go-diff is a Go implementation of Google's Diff, Match, and Patch library
6// Original library is Copyright (c) 2006 Google Inc.
7// http://code.google.com/p/google-diff-match-patch/
8
9// Package diffmatchpatch offers robust algorithms to perform the operations required for synchronizing plain text.
10package diffmatchpatch
11
12import (
13 "time"
14)
15
16// DiffMatchPatch holds the configuration for diff-match-patch operations.
17type DiffMatchPatch struct {
18 // Number of seconds to map a diff before giving up (0 for infinity).
19 DiffTimeout time.Duration
20 // Cost of an empty edit operation in terms of edit characters.
21 DiffEditCost int
22 // 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).
23 MatchDistance int
24 // 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.
25 PatchDeleteThreshold float64
26 // Chunk size for context length.
27 PatchMargin int
28 // The number of bits in an int.
29 MatchMaxBits int
30 // At what point is no match declared (0.0 = perfection, 1.0 = very loose).
31 MatchThreshold float64
32}
33
34// New creates a new DiffMatchPatch object with default parameters.
35func New() *DiffMatchPatch {
36 // Defaults.
37 return &DiffMatchPatch{
38 DiffTimeout: time.Second,
39 DiffEditCost: 4,
40 MatchThreshold: 0.5,
41 MatchDistance: 1000,
42 PatchDeleteThreshold: 0.5,
43 PatchMargin: 4,
44 MatchMaxBits: 32,
45 }
46}