mirror of
https://github.com/grafana/grafana.git
synced 2025-08-06 20:59:35 +08:00
Merge branch 'master' into mssql_datasource
This commit is contained in:
39
vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go
generated
vendored
39
vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go
generated
vendored
@ -85,7 +85,7 @@ func (dmp *DiffMatchPatch) diffMainRunes(text1, text2 []rune, checklines bool, d
|
||||
|
||||
// Restore the prefix and suffix.
|
||||
if len(commonprefix) != 0 {
|
||||
diffs = append([]Diff{Diff{DiffEqual, string(commonprefix)}}, diffs...)
|
||||
diffs = append([]Diff{{DiffEqual, string(commonprefix)}}, diffs...)
|
||||
}
|
||||
if len(commonsuffix) != 0 {
|
||||
diffs = append(diffs, Diff{DiffEqual, string(commonsuffix)})
|
||||
@ -122,16 +122,16 @@ func (dmp *DiffMatchPatch) diffCompute(text1, text2 []rune, checklines bool, dea
|
||||
}
|
||||
// Shorter text is inside the longer text (speedup).
|
||||
return []Diff{
|
||||
Diff{op, string(longtext[:i])},
|
||||
Diff{DiffEqual, string(shorttext)},
|
||||
Diff{op, string(longtext[i+len(shorttext):])},
|
||||
{op, string(longtext[:i])},
|
||||
{DiffEqual, string(shorttext)},
|
||||
{op, string(longtext[i+len(shorttext):])},
|
||||
}
|
||||
} else if len(shorttext) == 1 {
|
||||
// Single character string.
|
||||
// After the previous speedup, the character can't be an equality.
|
||||
return []Diff{
|
||||
Diff{DiffDelete, string(text1)},
|
||||
Diff{DiffInsert, string(text2)},
|
||||
{DiffDelete, string(text1)},
|
||||
{DiffInsert, string(text2)},
|
||||
}
|
||||
// Check to see if the problem can be split in two.
|
||||
} else if hm := dmp.diffHalfMatch(text1, text2); hm != nil {
|
||||
@ -145,7 +145,7 @@ func (dmp *DiffMatchPatch) diffCompute(text1, text2 []rune, checklines bool, dea
|
||||
diffsA := dmp.diffMainRunes(text1A, text2A, checklines, deadline)
|
||||
diffsB := dmp.diffMainRunes(text1B, text2B, checklines, deadline)
|
||||
// Merge the results.
|
||||
return append(diffsA, append([]Diff{Diff{DiffEqual, string(midCommon)}}, diffsB...)...)
|
||||
return append(diffsA, append([]Diff{{DiffEqual, string(midCommon)}}, diffsB...)...)
|
||||
} else if checklines && len(text1) > 100 && len(text2) > 100 {
|
||||
return dmp.diffLineMode(text1, text2, deadline)
|
||||
}
|
||||
@ -330,8 +330,8 @@ func (dmp *DiffMatchPatch) diffBisect(runes1, runes2 []rune, deadline time.Time)
|
||||
}
|
||||
// Diff took too long and hit the deadline or number of diffs equals number of characters, no commonality at all.
|
||||
return []Diff{
|
||||
Diff{DiffDelete, string(runes1)},
|
||||
Diff{DiffInsert, string(runes2)},
|
||||
{DiffDelete, string(runes1)},
|
||||
{DiffInsert, string(runes2)},
|
||||
}
|
||||
}
|
||||
|
||||
@ -673,7 +673,7 @@ func (dmp *DiffMatchPatch) DiffCleanupSemantic(diffs []Diff) []Diff {
|
||||
insPoint := equalities.data
|
||||
diffs = append(
|
||||
diffs[:insPoint],
|
||||
append([]Diff{Diff{DiffDelete, lastequality}}, diffs[insPoint:]...)...)
|
||||
append([]Diff{{DiffDelete, lastequality}}, diffs[insPoint:]...)...)
|
||||
|
||||
// Change second copy to insert.
|
||||
diffs[insPoint+1].Type = DiffInsert
|
||||
@ -726,7 +726,7 @@ func (dmp *DiffMatchPatch) DiffCleanupSemantic(diffs []Diff) []Diff {
|
||||
// Overlap found. Insert an equality and trim the surrounding edits.
|
||||
diffs = append(
|
||||
diffs[:pointer],
|
||||
append([]Diff{Diff{DiffEqual, insertion[:overlapLength1]}}, diffs[pointer:]...)...)
|
||||
append([]Diff{{DiffEqual, insertion[:overlapLength1]}}, diffs[pointer:]...)...)
|
||||
|
||||
diffs[pointer-1].Text =
|
||||
deletion[0 : len(deletion)-overlapLength1]
|
||||
@ -955,7 +955,7 @@ func (dmp *DiffMatchPatch) DiffCleanupEfficiency(diffs []Diff) []Diff {
|
||||
|
||||
// Duplicate record.
|
||||
diffs = append(diffs[:insPoint],
|
||||
append([]Diff{Diff{DiffDelete, lastequality}}, diffs[insPoint:]...)...)
|
||||
append([]Diff{{DiffDelete, lastequality}}, diffs[insPoint:]...)...)
|
||||
|
||||
// Change second copy to insert.
|
||||
diffs[insPoint+1].Type = DiffInsert
|
||||
@ -1028,7 +1028,7 @@ func (dmp *DiffMatchPatch) DiffCleanupMerge(diffs []Diff) []Diff {
|
||||
if x > 0 && diffs[x-1].Type == DiffEqual {
|
||||
diffs[x-1].Text += string(textInsert[:commonlength])
|
||||
} else {
|
||||
diffs = append([]Diff{Diff{DiffEqual, string(textInsert[:commonlength])}}, diffs...)
|
||||
diffs = append([]Diff{{DiffEqual, string(textInsert[:commonlength])}}, diffs...)
|
||||
pointer++
|
||||
}
|
||||
textInsert = textInsert[commonlength:]
|
||||
@ -1285,6 +1285,7 @@ func (dmp *DiffMatchPatch) DiffToDelta(diffs []Diff) string {
|
||||
// DiffFromDelta given the original text1, and an encoded string which describes the operations required to transform text1 into text2, comAdde the full diff.
|
||||
func (dmp *DiffMatchPatch) DiffFromDelta(text1 string, delta string) (diffs []Diff, err error) {
|
||||
i := 0
|
||||
runes := []rune(text1)
|
||||
|
||||
for _, token := range strings.Split(delta, "\t") {
|
||||
if len(token) == 0 {
|
||||
@ -1316,9 +1317,13 @@ func (dmp *DiffMatchPatch) DiffFromDelta(text1 string, delta string) (diffs []Di
|
||||
return nil, errors.New("Negative number in DiffFromDelta: " + param)
|
||||
}
|
||||
|
||||
// Remember that string slicing is by byte - we want by rune here.
|
||||
text := string([]rune(text1)[i : i+int(n)])
|
||||
i += int(n)
|
||||
// Break out if we are out of bounds, go1.6 can't handle this very well
|
||||
if i > len(runes) {
|
||||
break
|
||||
}
|
||||
// Remember that string slicing is by byte - we want by rune here.
|
||||
text := string(runes[i-int(n) : i])
|
||||
|
||||
if op == '=' {
|
||||
diffs = append(diffs, Diff{DiffEqual, text})
|
||||
@ -1331,8 +1336,8 @@ func (dmp *DiffMatchPatch) DiffFromDelta(text1 string, delta string) (diffs []Di
|
||||
}
|
||||
}
|
||||
|
||||
if i != len([]rune(text1)) {
|
||||
return nil, fmt.Errorf("Delta length (%v) smaller than source text length (%v)", i, len(text1))
|
||||
if i != len(runes) {
|
||||
return nil, fmt.Errorf("Delta length (%v) is different from source text length (%v)", i, len(text1))
|
||||
}
|
||||
|
||||
return diffs, nil
|
||||
|
Reference in New Issue
Block a user