Skip to content

Commit

Permalink
Bump java-diff-utils from 2.2.0 to 4.0 (#4507)
Browse files Browse the repository at this point in the history
Co-Authored-By: Tobias Diez <[email protected]>

* Bump java-diff-utils from 2.2.0 to 4.0

Bumps [java-diff-utils](https://github.com/java-diff-utils/java-diff-utils) from 2.2.0 to 4.0.
- [Release notes](https://github.com/java-diff-utils/java-diff-utils/releases)
- [Commits](https://github.com/java-diff-utils/java-diff-utils/commits/java-diff-utils-4.0)

Signed-off-by: dependabot[bot] <[email protected]>

* Fix build
  • Loading branch information
dependabot[bot] authored and tobiasdiez committed Nov 23, 2018
1 parent 944d3c9 commit 742cfce
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 22 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ dependencies {
compile "org.libreoffice:ridl:5.4.2"
compile "org.libreoffice:unoil:5.4.2"

compile 'io.github.java-diff-utils:java-diff-utils:2.2.0'
compile 'io.github.java-diff-utils:java-diff-utils:4.0'
compile 'info.debatty:java-string-similarity:1.1.0'

antlr3 'org.antlr:antlr:3.5.2'
Expand Down
58 changes: 37 additions & 21 deletions src/main/java/org/jabref/gui/mergeentries/DiffHighlighting.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,42 @@

import javafx.scene.text.Text;

import difflib.Delta;
import difflib.DiffUtils;
import com.github.difflib.DiffUtils;
import com.github.difflib.algorithm.DiffException;
import com.github.difflib.patch.AbstractDelta;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DiffHighlighting {

private static final Logger LOGGER = LoggerFactory.getLogger(DiffHighlighting.class);

private DiffHighlighting() {
}

public static List<Text> generateDiffHighlighting(String baseString, String modifiedString, String separator) {
List<String> stringList = Arrays.asList(baseString.split(separator));
List<Text> result = stringList.stream().map(DiffHighlighting::forUnchanged).collect(Collectors.toList());
List<Delta<String>> deltaList = DiffUtils.diff(stringList, Arrays.asList(modifiedString.split(separator))).getDeltas();
Collections.reverse(deltaList);
for (Delta<String> delta : deltaList) {
int startPos = delta.getOriginal().getPosition();
List<String> lines = delta.getOriginal().getLines();
int offset = 0;
switch (delta.getType()) {
List<AbstractDelta<String>> deltaList;
try {
deltaList = DiffUtils.diff(stringList, Arrays.asList(modifiedString.split(separator))).getDeltas();
} catch (DiffException e) {
LOGGER.error("Error while generating diff of " + baseString + " and " + modifiedString);
return Collections.emptyList();
}
Collections.reverse(deltaList);
for (AbstractDelta<String> delta : deltaList) {
int startPos = delta.getSource().getPosition();
List<String> lines = delta.getSource().getLines();
int offset = 0;
switch (delta.getType()) {
case CHANGE:
for (String line : lines) {
result.set(startPos + offset, forRemoved(line + separator));
offset++;
}
result.set(startPos + offset - 1, forRemoved(stringList.get((startPos + offset) - 1) + separator));
result.add(startPos + offset, forAdded(String.join(separator, delta.getRevised().getLines())));
result.add(startPos + offset, forAdded(String.join(separator, delta.getTarget().getLines())));
break;
case DELETE:
for (String line : lines) {
Expand All @@ -40,12 +51,12 @@ public static List<Text> generateDiffHighlighting(String baseString, String modi
}
break;
case INSERT:
result.add(delta.getOriginal().getPosition(), forAdded(String.join(separator, delta.getRevised().getLines())));
result.add(delta.getSource().getPosition(), forAdded(String.join(separator, delta.getTarget().getLines())));
break;
default:
break;
}
}
}
return result;
}

Expand Down Expand Up @@ -76,13 +87,19 @@ public static Text forRemoved(String text) {
public static List<Text> generateSymmetricHighlighting(String baseString, String modifiedString, String separator) {
List<String> stringList = Arrays.asList(baseString.split(separator));
List<Text> result = stringList.stream().map(text -> DiffHighlighting.forUnchanged(text + separator)).collect(Collectors.toList());
List<Delta<String>> deltaList = DiffUtils.diff(stringList, Arrays.asList(modifiedString.split(separator))).getDeltas();
Collections.reverse(deltaList);
for (Delta<String> delta : deltaList) {
int startPos = delta.getOriginal().getPosition();
List<String> lines = delta.getOriginal().getLines();
int offset = 0;
switch (delta.getType()) {
List<AbstractDelta<String>> deltaList;
try {
deltaList = DiffUtils.diff(stringList, Arrays.asList(modifiedString.split(separator))).getDeltas();
} catch (DiffException e) {
LOGGER.error("Error while generating diff of " + baseString + " and " + modifiedString);
return Collections.emptyList();
}
Collections.reverse(deltaList);
for (AbstractDelta<String> delta : deltaList) {
int startPos = delta.getSource().getPosition();
List<String> lines = delta.getSource().getLines();
int offset = 0;
switch (delta.getType()) {
case CHANGE:
for (String line : lines) {
result.set(startPos + offset, forChanged(line + separator));
Expand All @@ -99,10 +116,9 @@ public static List<Text> generateSymmetricHighlighting(String baseString, String
break;
default:
break;
}
}
}

return result;
}

}

0 comments on commit 742cfce

Please sign in to comment.