Documentation ¶
Overview ¶
Package diffmatchpatch offers robust algorithms to perform the operations required for synchronizing plain text.
Index ¶
- type Config
- func (config *Config) Diff(text1, text2 string, checklines bool) []Diff
- func (config *Config) DiffBisect(text1, text2 string, deadline time.Time) []Diff
- func (config *Config) DiffCharsToLines(diffs []Diff, lineArray []string) []Diff
- func (config *Config) DiffCleanupEfficiency(diffs []Diff) []Diff
- func (config *Config) DiffCleanupMerge(diffs []Diff) []Diff
- func (config *Config) DiffCleanupSemantic(diffs []Diff) []Diff
- func (config *Config) DiffCleanupSemanticLossless(diffs []Diff) []Diff
- func (config *Config) DiffCommonOverlap(text1 string, text2 string) int
- func (config *Config) DiffCommonPrefix(text1, text2 string) int
- func (config *Config) DiffCommonSuffix(text1, text2 string) int
- func (config *Config) DiffFromDelta(text1 string, delta string) (diffs []Diff, err error)
- func (config *Config) DiffHalfMatch(text1, text2 string) []string
- func (config *Config) DiffLevenshtein(diffs []Diff) int
- func (config *Config) DiffLinesToChars(text1, text2 string) (string, string, []string)
- func (config *Config) DiffLinesToRunes(text1, text2 string) ([]rune, []rune, []string)
- func (config *Config) DiffPrettyHtml(diffs []Diff) string
- func (config *Config) DiffPrettyText(diffs []Diff) string
- func (config *Config) DiffRunes(text1, text2 []rune, checklines bool) []Diff
- func (config *Config) DiffText1(diffs []Diff) string
- func (config *Config) DiffText2(diffs []Diff) string
- func (config *Config) DiffToDelta(diffs []Diff) string
- func (config *Config) DiffXIndex(diffs []Diff, loc int) int
- func (config *Config) Match(text, pattern string, loc int) int
- func (config *Config) MatchAlphabet(pattern string) map[byte]int
- func (config *Config) MatchBitap(text, pattern string, loc int) int
- func (config *Config) PatchAddContext(patch Patch, text string) Patch
- func (config *Config) PatchAddPadding(patches []Patch) string
- func (config *Config) PatchApply(patches []Patch, text string) (string, []bool)
- func (config *Config) PatchDeepCopy(patches []Patch) []Patch
- func (config *Config) PatchFromText(textline string) ([]Patch, error)
- func (config *Config) PatchMake(opt ...interface{}) []Patch
- func (config *Config) PatchSplitMax(patches []Patch) []Patch
- func (config *Config) PatchToText(patches []Patch) string
- type Diff
- type Op
- type Patch
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // DiffTimeout is the 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 // 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 // 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 }
Config is the configuration for diff-match-patch operations.
func NewDefaultConfig ¶
func NewDefaultConfig() *Config
NewDefaultConfig creates a new configuration with default parameters.
func (*Config) Diff ¶
Diff finds the differences between two texts.
If an invalid UTF-8 sequence is encountered, it will be replaced by the Unicode replacement character.
func (*Config) DiffBisect ¶
DiffBisect finds the 'middle snake' of a diff, split the problem in two and return the recursively constructed diff. If an invalid UTF-8 sequence is encountered, it will be replaced by the Unicode replacement character.
See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
func (*Config) DiffCharsToLines ¶
DiffCharsToLines rehydrates the text in a diff from a string of line hashes to real lines of text.
func (*Config) DiffCleanupEfficiency ¶
DiffCleanupEfficiency reduces the number of edits by eliminating operationally trivial equalities.
func (*Config) DiffCleanupMerge ¶
DiffCleanupMerge reorders and merges like edit sections. Merge equalities. Any edit section can move as long as it doesn't cross an equality.
func (*Config) DiffCleanupSemantic ¶
DiffCleanupSemantic reduces the number of edits by eliminating semantically trivial equalities.
func (*Config) DiffCleanupSemanticLossless ¶
DiffCleanupSemanticLossless looks for single edits surrounded on both sides by equalities which can be shifted sideways to align the edit to a word boundary. E.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.
func (*Config) DiffCommonOverlap ¶
DiffCommonOverlap determines if the suffix of one string is the prefix of another.
func (*Config) DiffCommonPrefix ¶
DiffCommonPrefix determines the common prefix length of two strings.
func (*Config) DiffCommonSuffix ¶
DiffCommonSuffix determines the common suffix length of two strings.
func (*Config) DiffFromDelta ¶
DiffFromDelta given the original text1, and an encoded string which describes the operations required to transform text1 into text2, comAdde the full diff.
func (*Config) DiffHalfMatch ¶
DiffHalfMatch checks whether the two texts share a substring which is at least half the length of the longer text. This speedup can produce non-minimal diffs.
func (*Config) DiffLevenshtein ¶
DiffLevenshtein computes the Levenshtein distance that is the number of inserted, deleted or substituted characters.
func (*Config) DiffLinesToChars ¶
DiffLinesToChars splits two texts into a list of strings, and educes the texts to a string of hashes where each Unicode character represents one line. It's slightly faster to call DiffLinesToRunes first, followed by DiffRunes.
func (*Config) DiffLinesToRunes ¶
DiffLinesToRunes splits two texts into a list of runes.
func (*Config) DiffPrettyHtml ¶
DiffPrettyHtml converts a []Diff into a pretty HTML report. It is intended as an example from which to write one's own display functions.
func (*Config) DiffPrettyText ¶
DiffPrettyText converts a []Diff into a colored text report.
func (*Config) DiffRunes ¶
DiffRunes finds the differences between two rune sequences.
If an invalid UTF-8 sequence is encountered, it will be replaced by the Unicode replacement character.
func (*Config) DiffText1 ¶
DiffText1 computes and returns the source text (all equalities and deletions).
func (*Config) DiffText2 ¶
DiffText2 computes and returns the destination text (all equalities and insertions).
func (*Config) DiffToDelta ¶
DiffToDelta crushes the diff into an encoded string which describes the operations required to transform text1 into text2. E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. Operations are tab-separated. Inserted text is escaped using %xx notation.
func (*Config) DiffXIndex ¶
DiffXIndex returns the equivalent location in s2.
func (*Config) Match ¶
Match locates the best instance of 'pattern' in 'text' near 'loc'. Returns -1 if no match found.
func (*Config) MatchAlphabet ¶
MatchAlphabet initialises the alphabet for the Bitap algorithm.
func (*Config) MatchBitap ¶
MatchBitap locates the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm. Returns -1 if no match was found.
func (*Config) PatchAddContext ¶
PatchAddContext increases the context until it is unique, but doesn't let the pattern expand beyond MatchMaxBits.
func (*Config) PatchAddPadding ¶
PatchAddPadding adds some padding on text start and end so that edges can match something. Intended to be called only from within patchApply.
func (*Config) PatchApply ¶
PatchApply merges a set of patches onto the text. Returns a patched text, as well as an array of true/false values indicating which patches were applied.
func (*Config) PatchDeepCopy ¶
PatchDeepCopy returns an array that is identical to a given array of patches.
func (*Config) PatchFromText ¶
PatchFromText parses a textual representation of patches and returns a List of Patch objects.
func (*Config) PatchSplitMax ¶
PatchSplitMax looks through the patches and breaks up any which are longer than the maximum limit of the match algorithm. Intended to be called only from within patchApply.
func (*Config) PatchToText ¶
PatchToText takes a list of patches and returns a textual representation.
type Op ¶
type Op int
Op is the diff operation enum.