i++
continue
}
- // when diffmatchpatch says [delA, =X, delBX], we
- // prefer [delAB, =X].
- if i < len(in)-2 &&
- d.Type == diffmatchpatch.DiffDelete &&
- in[i+1].Type == diffmatchpatch.DiffEqual &&
- in[i+2].Type == diffmatchpatch.DiffDelete &&
- strings.HasSuffix(in[i+2].Text, in[i+1].Text) {
- out = append(out,
- diffmatchpatch.Diff{diffmatchpatch.DiffDelete, d.Text + in[i+2].Text[:len(in[i+2].Text)-len(in[i+1].Text)]},
- in[i+1])
- i += 2
- continue
- }
// [=AB,insCB,=D] => [=A,insBC,=BD]
// and
// [=AB,delCB,=D] => [=A,delBC,=BD]
in[i+1].Type != diffmatchpatch.DiffEqual &&
in[i+2].Type == diffmatchpatch.DiffEqual &&
len(d.Text) > 0 && len(in[i+1].Text) > 0 &&
- d.Text[len(d.Text)-1] == in[i+1].Text[len(in[i+1].Text)-1] &&
!(i+3 < len(in) &&
// Except: leave deletion alone if an
// upcoming insertion will be moved up
in[i+1].Text[:len(in[i+1].Text)-x],
in[i+1].Text[len(in[i+1].Text)-x:]+in[i+2].Text
}
+ // [=X,delAX] => [delXA,=X]
+ if i < len(in)-1 &&
+ d.Type == diffmatchpatch.DiffEqual &&
+ in[i+1].Type == diffmatchpatch.DiffDelete && false {
+ }
out = append(out, d)
}
in, out = out, make([]diffmatchpatch.Diff, 0, len(in))
expect: []string{"2_3insGT"},
},
{
- a: "aGACGGACAGGGCCCgg",
- b: "agg",
- expect: []string{"3_15del"},
+ a: "aGACGGACAGGGCCCggatgcaa",
+ b: "aggatgcaa",
+ expect: []string{"2_15del"},
},
{
a: "aggGac",
expect: []string{"1_2insTTCG"},
},
{
- a: "tcAACaggg",
- b: "tcaggg",
+ a: "tCAACAggg",
+ b: "tCAggg",
expect: []string{"2_4del"},
},
+ {
+ a: "caaAc",
+ b: "caaCc",
+ expect: []string{"4A>C"},
+ },
+ {
+ a: "aGGgaca",
+ b: "agaca",
+ expect: []string{"2_3del"},
+ },
} {
c.Log(trial)
var vars []string
diffs, _ := Diff(strings.ToUpper(trial.a), strings.ToUpper(trial.b), 0)
+ c.Logf("%v", diffs)
for _, v := range diffs {
vars = append(vars, v.String())
}