Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3b23656

Browse files
committed
included new file diff capability to new unified diff parser
1 parent39efdd5 commit3b23656

File tree

3 files changed

+54
-11
lines changed

3 files changed

+54
-11
lines changed

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

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ public static void write(UnifiedDiff diff, Function<String, List<String>> origin
4444
}
4545

4646
publicstaticvoidwrite(UnifiedDiffdiff,Function<String,List<String>>originalLinesProvider,Consumer<String>writer,intcontextSize)throwsIOException {
47-
writer.accept(diff.getHeader());
47+
if (diff.getHeader() !=null) {
48+
writer.accept(diff.getHeader());
49+
}
4850

4951
for (UnifiedDiffFilefile :diff.getFiles()) {
5052
List<AbstractDelta<String>>patchDeltas =newArrayList<>(
@@ -54,9 +56,9 @@ public static void write(UnifiedDiff diff, Function<String, List<String>> origin
5456
if (file.getIndex() !=null) {
5557
writer.accept("index " +file.getIndex());
5658
}
57-
if (file.getFromFile() !=null) {
58-
writer.accept("--- " +file.getFromFile());
59-
}
59+
60+
writer.accept("--- " +file.getFromFile());
61+
6062
if (file.getToFile() !=null) {
6163
writer.accept("+++ " +file.getToFile());
6264
}
@@ -83,7 +85,7 @@ public static void write(UnifiedDiff diff, Function<String, List<String>> origin
8385
// if it isn't, output the current set,
8486
// then create a new set and add the current Delta to
8587
// it.
86-
processDeltas(writer,originalLines,deltas,contextSize);
88+
processDeltas(writer,originalLines,deltas,contextSize,false);
8789
deltas.clear();
8890
deltas.add(nextDelta);
8991
}
@@ -92,7 +94,8 @@ public static void write(UnifiedDiff diff, Function<String, List<String>> origin
9294

9395
}
9496
// don't forget to process the last set of Deltas
95-
processDeltas(writer,originalLines,deltas,contextSize);
97+
processDeltas(writer,originalLines,deltas,contextSize,
98+
patchDeltas.size() ==1 &&file.getFromFile() ==null);
9699
}
97100

98101
}
@@ -104,18 +107,23 @@ public static void write(UnifiedDiff diff, Function<String, List<String>> origin
104107

105108
privatestaticvoidprocessDeltas(Consumer<String>writer,
106109
List<String>origLines,List<AbstractDelta<String>>deltas,
107-
intcontextSize) {
110+
intcontextSize,booleannewFile) {
108111
List<String>buffer =newArrayList<>();
109112
intorigTotal =0;// counter for total lines output from Original
110113
intrevTotal =0;// counter for total lines output from Original
111114
intline;
112115

113116
AbstractDelta<String>curDelta =deltas.get(0);
114117

115-
// NOTE: +1 to overcome the 0-offset Position
116-
intorigStart =curDelta.getSource().getPosition() +1 -contextSize;
117-
if (origStart <1) {
118-
origStart =1;
118+
intorigStart;
119+
if (newFile) {
120+
origStart =0;
121+
}else {
122+
// NOTE: +1 to overcome the 0-offset Position
123+
origStart =curDelta.getSource().getPosition() +1 -contextSize;
124+
if (origStart <1) {
125+
origStart =1;
126+
}
119127
}
120128

121129
intrevStart =curDelta.getTarget().getPosition() +1 -contextSize;

‎java-diff-utils/src/test/java/com/github/difflib/GenerateUnifiedDiffTest.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ public void testNewFileCreation() throws DiffException {
120120
List<String>udiff =UnifiedDiffUtils.generateUnifiedDiff(null,"revised",
121121
original,patch,10);
122122

123+
assertEquals("--- null",udiff.get(0));
124+
assertEquals("+++ revised",udiff.get(1));
123125
assertEquals("@@ -0,0 +1,2 @@",udiff.get(2));
124126

125127
UnifiedDiffUtils.parseUnifiedDiff(udiff);

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
packagecom.github.difflib.unifieddiff;
1717

18+
importcom.github.difflib.DiffUtils;
19+
importcom.github.difflib.algorithm.DiffException;
20+
importcom.github.difflib.patch.Patch;
1821
importjava.io.ByteArrayInputStream;
1922
importjava.io.IOException;
2023
importjava.io.StringWriter;
@@ -23,6 +26,9 @@
2326
importjava.nio.charset.Charset;
2427
importjava.nio.file.Files;
2528
importjava.nio.file.Paths;
29+
importjava.util.ArrayList;
30+
importjava.util.List;
31+
importstaticorg.junit.Assert.assertEquals;
2632
importorg.junit.Test;
2733

2834
/**
@@ -43,6 +49,33 @@ public void testWrite() throws URISyntaxException, IOException {
4349
// UnifiedDiffWriter.write(diff, writer);
4450
// System.out.println(writer.toString());
4551
}
52+
53+
/**
54+
* Issue 47
55+
*/
56+
@Test
57+
publicvoidtestWriteWithNewFile()throwsURISyntaxException,IOException,DiffException {
58+
59+
List<String>original =newArrayList<>();
60+
List<String>revised =newArrayList<>();
61+
62+
revised.add("line1");
63+
revised.add("line2");
64+
65+
Patch<String>patch =DiffUtils.diff(original,revised);
66+
UnifiedDiffdiff =newUnifiedDiff();
67+
diff.addFile(UnifiedDiffFile.from(null,"revised",patch) );
68+
69+
StringWriterwriter =newStringWriter();
70+
UnifiedDiffWriter.write(diff,f ->original,writer,5);
71+
System.out.println(writer.toString());
72+
73+
String[]lines =writer.toString().split("\\n");
74+
75+
assertEquals("--- null",lines[0]);
76+
assertEquals("+++ revised",lines[1]);
77+
assertEquals("@@ -0,0 +1,2 @@",lines[2]);
78+
}
4679

4780
staticStringreadFile(URIpath,Charsetencoding)
4881
throwsIOException {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp