Skip to content

Commit 94ffdab

Browse files
committed
included new file diff capability to new unified diff parser
1 parent ca0959a commit 94ffdab

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

java-diff-utils/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffWriter.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.io.Writer;
2121
import java.util.ArrayList;
2222
import java.util.List;
23+
import java.util.Objects;
2324
import java.util.function.Consumer;
2425
import java.util.function.Function;
2526
import java.util.logging.Level;
@@ -34,6 +35,7 @@ public class UnifiedDiffWriter {
3435
private static final Logger LOG = Logger.getLogger(UnifiedDiffWriter.class.getName());
3536

3637
public static void write(UnifiedDiff diff, Function<String, List<String>> originalLinesProvider, Writer writer, int contextSize) throws IOException {
38+
Objects.requireNonNull(originalLinesProvider, "original lines provider needs to be specified");
3739
write(diff, originalLinesProvider, line -> {
3840
try {
3941
writer.append(line).append("\n");
@@ -138,7 +140,8 @@ private static void processDeltas(Consumer<String> writer,
138140
}
139141

140142
// output the context before the first Delta
141-
for (line = contextStart; line < curDelta.getSource().getPosition(); line++) { //
143+
for (line = contextStart; line < curDelta.getSource().getPosition()
144+
&& line < origLines.size(); line++) { //
142145
buffer.add(" " + origLines.get(line));
143146
origTotal++;
144147
revTotal++;
@@ -153,8 +156,8 @@ private static void processDeltas(Consumer<String> writer,
153156
AbstractDelta<String> nextDelta = deltas.get(deltaIndex);
154157
int intermediateStart = curDelta.getSource().getPosition()
155158
+ curDelta.getSource().getLines().size();
156-
for (line = intermediateStart; line < nextDelta.getSource()
157-
.getPosition(); line++) {
159+
for (line = intermediateStart; line < nextDelta.getSource().getPosition()
160+
&& line < origLines.size(); line++) {
158161
// output the code between the last Delta and this one
159162
buffer.add(" " + origLines.get(line));
160163
origTotal++;

java-diff-utils/src/test/java/com/github/difflib/unifieddiff/UnifiedDiffWriterTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
import java.nio.file.Files;
2828
import java.nio.file.Paths;
2929
import java.util.ArrayList;
30+
import java.util.Collections;
3031
import java.util.List;
3132
import static org.junit.Assert.assertEquals;
32-
import org.junit.Ignore;
3333
import org.junit.Test;
3434

3535
/**
@@ -42,13 +42,12 @@ public UnifiedDiffWriterTest() {
4242
}
4343

4444
@Test
45-
@Ignore
4645
public void testWrite() throws URISyntaxException, IOException {
4746
String str = readFile(UnifiedDiffReaderTest.class.getResource("jsqlparser_patch_1.diff").toURI(), Charset.defaultCharset());
4847
UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff(new ByteArrayInputStream(str.getBytes()));
4948

5049
StringWriter writer = new StringWriter();
51-
UnifiedDiffWriter.write(diff, f -> null, writer, 5);
50+
UnifiedDiffWriter.write(diff, f -> Collections.EMPTY_LIST, writer, 5);
5251
System.out.println(writer.toString());
5352
}
5453

0 commit comments

Comments
 (0)