curran / curran/google-diff-match-patch

diff_cleanupMerge() could be improved

Aperta
#75 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
auto-migrated Priority-Medium Type-Defect
Lingua principale
Python
Stelle
17
Fork
2
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

```
Here are some cases I've discovered where diff_cleanupMerge() could do a better
job.
Probably it's not the best place to put those fixes. Or maybe such situations
will never happen upstream in diff itself. Please let me know then.

// this works already
diffs = diffList(new Diff(EQUAL, "g"), new Diff(DELETE, "gg"), new Diff(EQUAL,
"abc"));
dmp.diff_cleanupMerge(diffs);
assertEquals("diff_cleanupMerge: Deletion move left.",
diffList(new Diff(DELETE, "gg"), new Diff(EQUAL, "gabc")), diffs);

// but this and the other two cases - don't
diffs = diffList(new Diff(EQUAL, "gg"), new Diff(DELETE, "g"), new Diff(EQUAL,
"abc"));
dmp.diff_cleanupMerge(diffs);
assertEquals("diff_cleanupMerge: Deletion multi-move left.",
diffList(new Diff(DELETE, "g"), new Diff(EQUAL, "ggabc")), diffs);

diffs = diffList(new Diff(EQUAL, "gdgd"), new Diff(DELETE, "gd"), new
Diff(EQUAL, "abc"));
dmp.diff_cleanupMerge(diffs);
assertEquals("diff_cleanupMerge: Deletion multi-move left.",
diffList(new Diff(DELETE, "gd"), new Diff(EQUAL, "gdgdabc")), diffs);

diffs = diffList(new Diff(EQUAL, "ggg"), new Diff(DELETE, "gg"), new
Diff(EQUAL, "abc"));
dmp.diff_cleanupMerge(diffs);
assertEquals("diff_cleanupMerge: Deletion tricky move left.",
diffList(new Diff(DELETE, "gg"), new Diff(EQUAL, "gggabc")), diffs);

The same applies to right shifts too.
```

Original issue reported on code.google.com by `2sa...@gmail.com` on 10 Jul 2012 at 9:43

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Individua diff_cleanupMerge() nell’implementazione Python e ispeziona i test di cleanup esistenti o i relativi punti di ingresso dei test. Riproduci i quattro casi di left-shift forniti, quindi copri il comportamento analogo di right-shift; il lavoro è completo quando gli elenchi di diff risultanti corrispondono alle trasformazioni previste e i test esistenti passano.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
tooling
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.