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));
|