< prev index next >

webrev/src/main/java/org/openjdk/skara/webrev/HunkCoalescer.java

Print this page

223         return removed;
224     }
225 
226     private List<Line> addedLines(Hunk hunk) {
227         var added = new ArrayList<Line>();
228         var addedStart = hunk.target().range().start();
229         var addedEnd = hunk.target().range().end();
230         for (var lineNum = addedStart; lineNum < addedEnd; lineNum++) {
231             var text = destContent.get(lineNum - 1);
232             added.add(new Line(lineNum, text));
233         }
234 
235         assert added.size() == hunk.target().lines().size();
236 
237         return added;
238     }
239 
240     private Context createContextAfterHunk(Hunk hunk, Hunk nextNonEmptySourceHunk, Hunk nextNonEmptyTargetHunk) {
241         var sourceAfterContextStart = hunk.source().range().end();
242         var sourceAfterContextEnd = hunk.source().range().end() + numContextLines;



243         sourceAfterContextEnd = Math.min(sourceAfterContextEnd, sourceContent.size() + 1);
244         if (nextNonEmptySourceHunk != null) {
245             var nextNonEmptySourceHunkStart = nextNonEmptySourceHunk.source().range().start();
246             sourceAfterContextEnd = sourceAfterContextEnd > nextNonEmptySourceHunkStart
247                     ? Math.min(sourceAfterContextEnd, nextNonEmptySourceHunkStart)
248                     : Math.max(sourceAfterContextEnd, nextNonEmptySourceHunkStart);
249         }
250         var sourceAfterContextCount = sourceAfterContextEnd - sourceAfterContextStart;
251 
252         var destAfterContextStart = hunk.target().range().end();
253         var destAfterContextEnd = hunk.target().range().end() + numContextLines;



254         destAfterContextEnd = Math.min(destAfterContextEnd, destContent.size() + 1);
255         if (nextNonEmptyTargetHunk != null) {
256             var nextNonEmptyTargetHunkStart = nextNonEmptyTargetHunk.target().range().start();
257             destAfterContextEnd = destAfterContextEnd > nextNonEmptyTargetHunkStart
258                     ? Math.min(destAfterContextEnd, nextNonEmptyTargetHunkStart)
259                     : Math.max(destAfterContextEnd, nextNonEmptyTargetHunkStart);
260         }
261 
262         if (nextNonEmptySourceHunk != null || nextNonEmptyTargetHunk != null) {
263             sourceAfterContextEnd += numContextLines;
264             destAfterContextEnd += numContextLines;
265         }
266 
267         var destAfterContextCount = destAfterContextEnd - destAfterContextStart;
268 
269         var afterContextCount = Math.min(sourceAfterContextCount, destAfterContextCount);
270 
271         var sourceLineNumStart = hunk.source().lines().isEmpty() && hunk.source().range().start() == 0 ?
272             sourceAfterContextStart + 1 : sourceAfterContextStart;
273         var sourceEndingLineNum = sourceLineNumStart + afterContextCount;
274         var sourceContextAfter = new ArrayList<Line>();
275         for (var lineNum = sourceLineNumStart; lineNum < sourceEndingLineNum; lineNum++) {
276             var text = sourceContent.get(lineNum - 1);
277             sourceContextAfter.add(new Line(lineNum, text));
278         }
279 
280         var destLineNumStart = hunk.target().lines().isEmpty() && hunk.target().range().start() == 0 ?
281             destAfterContextStart + 1 : destAfterContextStart;
282         var destEndingLineNum = destLineNumStart + afterContextCount;
283         var destContextAfter = new ArrayList<Line>();
284         for (var lineNum = destLineNumStart; lineNum < destEndingLineNum; lineNum++) {
285             var text = destContent.get(lineNum - 1);
286             destContextAfter.add(new Line(lineNum, text));

223         return removed;
224     }
225 
226     private List<Line> addedLines(Hunk hunk) {
227         var added = new ArrayList<Line>();
228         var addedStart = hunk.target().range().start();
229         var addedEnd = hunk.target().range().end();
230         for (var lineNum = addedStart; lineNum < addedEnd; lineNum++) {
231             var text = destContent.get(lineNum - 1);
232             added.add(new Line(lineNum, text));
233         }
234 
235         assert added.size() == hunk.target().lines().size();
236 
237         return added;
238     }
239 
240     private Context createContextAfterHunk(Hunk hunk, Hunk nextNonEmptySourceHunk, Hunk nextNonEmptyTargetHunk) {
241         var sourceAfterContextStart = hunk.source().range().end();
242         var sourceAfterContextEnd = hunk.source().range().end() + numContextLines;
243         if (nextNonEmptySourceHunk != null || nextNonEmptyTargetHunk != null) {
244             sourceAfterContextEnd += numContextLines; // include the "before" context for the next hunk
245         }
246         sourceAfterContextEnd = Math.min(sourceAfterContextEnd, sourceContent.size() + 1);
247         if (nextNonEmptySourceHunk != null) {
248             var nextNonEmptySourceHunkStart = nextNonEmptySourceHunk.source().range().start();
249             sourceAfterContextEnd = sourceAfterContextEnd > nextNonEmptySourceHunkStart
250                     ? Math.min(sourceAfterContextEnd, nextNonEmptySourceHunkStart)
251                     : Math.max(sourceAfterContextEnd, nextNonEmptySourceHunkStart);
252         }
253         var sourceAfterContextCount = sourceAfterContextEnd - sourceAfterContextStart;
254 
255         var destAfterContextStart = hunk.target().range().end();
256         var destAfterContextEnd = hunk.target().range().end() + numContextLines;
257         if (nextNonEmptySourceHunk != null || nextNonEmptyTargetHunk != null) {
258             destAfterContextEnd += numContextLines; // include the "before" context for the next hunk
259         }
260         destAfterContextEnd = Math.min(destAfterContextEnd, destContent.size() + 1);
261         if (nextNonEmptyTargetHunk != null) {
262             var nextNonEmptyTargetHunkStart = nextNonEmptyTargetHunk.target().range().start();
263             destAfterContextEnd = destAfterContextEnd > nextNonEmptyTargetHunkStart
264                     ? Math.min(destAfterContextEnd, nextNonEmptyTargetHunkStart)
265                     : Math.max(destAfterContextEnd, nextNonEmptyTargetHunkStart);
266         }






267         var destAfterContextCount = destAfterContextEnd - destAfterContextStart;
268 
269         var afterContextCount = Math.min(sourceAfterContextCount, destAfterContextCount);
270 
271         var sourceLineNumStart = hunk.source().lines().isEmpty() && hunk.source().range().start() == 0 ?
272             sourceAfterContextStart + 1 : sourceAfterContextStart;
273         var sourceEndingLineNum = sourceLineNumStart + afterContextCount;
274         var sourceContextAfter = new ArrayList<Line>();
275         for (var lineNum = sourceLineNumStart; lineNum < sourceEndingLineNum; lineNum++) {
276             var text = sourceContent.get(lineNum - 1);
277             sourceContextAfter.add(new Line(lineNum, text));
278         }
279 
280         var destLineNumStart = hunk.target().lines().isEmpty() && hunk.target().range().start() == 0 ?
281             destAfterContextStart + 1 : destAfterContextStart;
282         var destEndingLineNum = destLineNumStart + afterContextCount;
283         var destContextAfter = new ArrayList<Line>();
284         for (var lineNum = destLineNumStart; lineNum < destEndingLineNum; lineNum++) {
285             var text = destContent.get(lineNum - 1);
286             destContextAfter.add(new Line(lineNum, text));
< prev index next >