curran / curran/google-diff-match-patch
Semantic cleanup: "eliminate equalility" and "extract overlap" passes conflict
- Vorherrschende Sprache
- Python
- Sterne
- 17
- Forks
- 2
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
```
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
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Durchsuche die Implementierung der semantischen Bereinigung nach den beiden im Issue genannten Bedingungen "extract overlap". Stelle das abc/def/ghi-Beispiel nach, ändere nur den beschriebenen Grenzvergleich und überprüfe, dass der zweite Durchlauf die ursprünglichen Änderungen nicht mehr wiederherstellt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 48/100