2012-12-15 9 views
5
Używam dopasowania diff http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html

Google-diff-match unika pokazywania nowych linii?

Aby pokazać różnice między 2 sztukami html. Problem polega na tym, że skrypt pokazuje nową linię jako

Czy istnieje sposób, aby ustawić, aby go nie wyświetlać?

Teraz jestem po prostu usuwając wszystkie istances z \n i \r, ale tego nie robi”brzmi dobrze

+0

Minęło dużo czasu, odkąd zrobiłem jakąkolwiek pracę z Diff Match Patch, ponieważ w mojej implementacji było to solidne, ale nie pamiętam, żeby symbole akapitu były problemem. Co próbujesz? – Hemlock

Odpowiedz

9

Jak widać w dokumentacji, funkcja dość html jest tylko próbka rozwijać jakieś fajne UI. Jeśli jednak zastąpisz ¶ (para;) null w funkcji, symbol zniknie.

diff_match_patch.prototype.diff_prettyHtml = function(diffs) { 
    var html = []; 
    var pattern_amp = /&/g; 
    var pattern_lt = /</g; 
    var pattern_gt = />/g; 
    var pattern_para = /\n/g; 
    for (var x = 0; x < diffs.length; x++) { 
     var op = diffs[x][0]; // Operation (insert, delete, equal) 
     var data = diffs[x][1]; // Text of change. 
     //var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;') 
     // .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>'); 
     var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;') 
      .replace(pattern_gt, '&gt;').replace(pattern_para, '<br>'); 
     switch (op) { 
     case DIFF_INSERT: 
      html[x] = '<ins style="background:#e6ffe6;">' + text + '</ins>'; 
      break; 
     case DIFF_DELETE: 
      html[x] = '<del style="background:#ffe6e6;">' + text + '</del>'; 
      break; 
     case DIFF_EQUAL: 
      html[x] = '<span>' + text + '</span>'; 
      break; 
     } 
    } 
    return html.join(''); 
    }; 

Aby to sprawdzić, wystarczy przejść do linku, który podałeś w Chrome oraz w egzemplarzu konsoli wklej powyżej funkcji przed uderzeniem w przycisk Oblicz diff.

+0

@llnk: czy to działa? – closure

+1

Nie próbowałem tego .. Pomyślałem, że było ustawienie +1 tak czy inaczej – dynamic

+1

Jak już wspomniałem prettyHtml jest po prostu funkcją wygody. Autor chce, aby użytkownicy upiekali w swoim własnym interfejsie użytkownika. Nie ma sensu podawanie parametru konfiguracyjnego dla funkcji wygody. W rzeczywistości zrobiliśmy niestandardowe ui powyżej. Możemy nazwać to fn czymś innym i zacząć pieczenie. – closure

Powiązane problemy