2012-03-23 7 views
17

Szukam implementacji algorytmów różnicowania javascript lub biblioteki, która została przetestowana i działa z dowolnymi plikami tekstowymi UTF8.Czy nodejs ma działającą bibliotekę diff lub algorytm?

Wszystkie te znalazłem tak daleko (powiedzmy na przykład http://ejohn.org/projects/javascript-diff-algorithm/) nie o przypadkach narożnych

(Spróbuj użyć plik zawierający ciąg '__proto__' w moim przykładzie biblioteki.)

+1

http://toolbox.no.de/search?q=diff – fent

+0

DeaDEnD proszę napisać, że jako odpowiedź, rozwiązała ona moje problemy. – blueberryfields

+0

istnieją narzędzia do rozwiązywania problemów dla systemu Unix, użyj ich – Raynos

Odpowiedz

10

Może to pomoże - jsdiff

+1

Upstream jest na czele ponownie, więc zaktualizowałem link. Podejrzewam, że w momencie, kiedy to pisałeś, to upstream został w tyle. Oto ten, do którego był wcześniej podłączony: https://github.com/NV/jsdiff –

3

Jestem fanem google diff match patch. Możesz wypróbować przykład here.

Dostępne są różne opcje czyszczenia w celu poprawienia poziomu wspólności między różnicami. Nie podoba mi się opcja oczyszczania semantycznego, ponieważ uważam ją za zbyt agresywną, ale skuteczność oczyszczania z wartością 10 działa dobrze dla mnie.

+0

Podoba mi się ten, ponieważ jest dostępny w Javie, JavaScript, Dart, C++, C#, Objective C, Lua i Python. Niezależnie od języka, każda biblioteka ma ten sam interfejs API i tę samą funkcjonalność. – elwarren

1

Zobacz bibliotekę JavaScript wikEd diff. Posiada obsługę Unicode i wielojęzyczną. Wykrywa i podkreśla ruchy bloków i opiera się na słowie/znaku. Możesz także użyć online too/demo do testowania różnych ustawień i do przeglądania wewnętrznych struktur danych. Kod biblioteki jest w pełni komentowany.