curran / curran/google-diff-match-patch

Semantic cleanup: "eliminate equalility" and "extract overlap" passes conflict

Aperta
#73 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

```
Because both passes use non-strict inequality they end up doing double work in
some cases.

Take for example, the following case:
...abcdefghi...

On the first "eliminate equality" pass the equality will be merged into edits
because quality length (3) is <= than edits length on both sides (3).
So it will become:
...abcdefdefghi...

Then on the second "extract overlap" pass the two above edits overlap will be
extracted back because overlap length (3) >= edit length (6) / 2.
So everything will be reverted to:
...abcdefghi...

It seems, the quick and easy fix for this is to make the second pass comparison
strict - use > instead of >=
Here:
if (overlap_length1 > deletion.length() / 2 || overlap_length1 >
insertion.length() / 2)
and here:
if (overlap_length2 > deletion.length() / 2 || overlap_length2 >
insertion.length() / 2)
```

Original issue reported on code.google.com by `2sa...@gmail.com` on 20 Jun 2012 at 7:25

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Cerca nell’implementazione della pulizia semantica le due condizioni "extract overlap" indicate nell’issue. Riproduci l’esempio abc/def/ghi, modifica solo il confronto dei limiti descritto e verifica che il secondo passaggio non ripristini più le modifiche originali.

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

Valutazione

Stack tecnologico
python
Ambito
tooling
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.