Ich versuche, ein Diff von zwei Dateien in einer Webseite anzuzeigen, die jsdiff (https://github.com/kpdecker/jsdiff) verwendet.Anzeigen eines abgeschnittenen Diff in einer Webseite
Insgesamt funktioniert es gut, aber wenn es nur eine kleine Änderung in einer großen Datei ist, möchte ich nicht den gesamten Dateiinhalt angezeigt werden, stattdessen möchte ich die unmodifizierten Teile abschneiden. Ähnlich wie Diffs werden auf GitHub angezeigt.
Was ich habe: AngularJS Code die diff mit jsdiff zu berechnen:
var serverValue = selectedServiceConfig.getServerConfigDataString();
$scope.diff = JsDiff.diffLines(serverValue, newValue);
Und dann HTML:
<pre id="diff">
<span ng-repeat="change in diff" ng-class="{'diff-added': change.added, 'diff-removed': change.removed, 'diff-no-change': !change.added && !change.removed}">{{change.value}}</span>
</pre>
und einige CSS:
#diff {
.diff-no-change {
opacity: 0.54;
}
.diff-added{
color: green;
}
.diff-removed{
color: red;
text-decoration: line-through;
}
}
Stellen Sie sich nun vor, die grauen Teile wären 1000 Zeilen. Ich möchte nicht alles zeigen. Aber nur ein Teil davon ist in der Nähe eines tatsächlichen Diff. Obwohl ich den Kontext nicht komplett entfernen möchte, wäre das einfach.
Hope meine Frage ist jetzt klarer.
Ja, obwohl ich will nicht alle unveränderten Teile entfernen. Ich möchte immer noch, dass einige Zeilen Kontext bereitstellen. – tkarls
Nun, das kannst du tun. Aber die spezifische Implementierung ist Ihr Teil. Ich werde keine vollständige Lösung anbieten, ich habe nur erwähnt, wie Sie unveränderte Teile weglassen können. Und übrigens, ich hoffe es hat dir geholfen! – Luke